当前位置: 首页 > 知识库问答 >
问题:

Django Rest框架+Angular.js web应用程序中的用户身份验证

公西志文
2023-03-14

我正在开发一个webapp,用户可以登录查看他们的在线酒窖。

我已经安装了Django REST模型,以及Angular的前端设计,但我很难将这些部分放在一起,我的主要问题是用户身份验证。

    null

提前致谢

共有1个答案

凌征
2023-03-14

我想有很多方法可以做到这一点,让我解释一下我是做什么的,希望这对我有帮助。这将是一个很长的帖子。我很想听听其他人是如何做到这一点的,或者更好的方法来实现同样的方法。你也可以在Github上查看我的种子项目,Angulation-Django-Seed。

我使用Witold Szczerba的http-auth-interceptor进行令牌身份验证。他的方法的优点在于,每当从您的站点发送的请求没有适当的凭据时,您将被重定向到登录屏幕,但您的请求将在登录完成时排队重新启动。

下面是与登录表单一起使用的登录指令。它发送到Django的auth令牌endpoint,使用响应令牌设置cookie,使用令牌设置默认头,以便所有请求都经过身份验证,并激发http-auth-interceptor登录事件。

.directive('login', function ($http, $cookieStore, authService) {
return {
  restrict: 'A',
  link: function (scope, elem, attrs) {

    elem.bind('submit', function () {
      var user_data = {
            "username": scope.username,
            "password": scope.password,
      };

      $http.post(constants.serverAddress + "api-token-auth", user_data, {"Authorization": ""})
          .success(function(response) {
              $cookieStore.put('djangotoken', response.token);
              $http.defaults.headers.common['Authorization'] = 'Token ' + response.token;
              authService.loginConfirmed();
          });
    });
  }
}
.run(function($rootScope) {
  $rootScope.$broadcast('event:initial-auth');
})
.directive('authApplication', function ($cookieStore, $http) {
    return {
        restrict: 'A',
        link: function (scope, elem, attrs) {

          var login = elem.find('#login-holder');
          var main = elem.find('#main');

          scope.$on('event:auth-loginRequired', function () {
            main.hide();
            login.slideDown('fast');
          });

          scope.$on('event:auth-loginConfirmed', function () {
            main.show();
            login.slideUp('fast');
          });

          scope.$on('event:initial-auth', function () {
             if ($cookieStore.get('djangotoken')) {
               $http.defaults.headers.common['Authorization'] = 'Token ' + $cookieStore.get('djangotoken');
             }
             else {
               login.slideDown('fast');
               main.hide();
             }
          });
        }
     }
  })

要使用它,我的html基本上是这样的。

<body auth-application>
  <div id="login-holder">
    ... login form
  </div>

  <div id="main">
    ... ng-view, or the bulk of your html
  </div>
 类似资料:
  • 我们使用 EWS 托管服务已经有一段时间了,但我们希望过渡到使用 Office 365 的 RESTful API。 应用程序是否可以在未经用户同意的情况下访问我们所有的用户数据?我们有一个内部应用程序,我们希望将一些O365/Sharepoint数据提供给我们的用户。使用SSO并不是一个真正的选择,因为我们不想一直要求我们的用户给予同意(我们假设他们已经给予同意)。具体来说,我们想要访问日历和邮

  • 管理员-能够创建内容,上传文件等(管理员帐户只能由另一个管理员创建) 未经授权的用户-可以查看内容 授权用户-可以评论内容 以下是我到目前为止对身份验证流的思考: 身份验证服务-使用用户凭据和权限访问数据库 API Gateway--检索来自用户的请求,检查用户是否登录(即用auth服务验证OAuth2访问令牌),并根据用户请求将流传输到其他服务(附加一些基本用户信息的JWT令牌) 另一个服务--

  • 问题内容: 我正在使用以下过滤器在我的Web应用程序中启用NTLM身份验证。 我得到Windows浏览器身份验证提示。运行正常。除了以下事实外- 我无法确定身份验证是成功还是失败! * 两种情况均无错误。 *在每种情况下都将打印用户名(正确或相反),工作站等。 web.xml很简单: 问题答案: 您收到的是Type 3消息,但是除了打印出详细信息之外,您什么都没做。此时,您需要验证客户的响应,并发

  • 我已经浏览了很多帖子和文章,但没有找到一个简单的解决方案,下面我必须实现。 平台:Spring Boot 2。x、 嵌入Tomcat的x(Spring Security 5.x.x) 解决方案:使用许多客户端应用程序和许多最终用户的REST服务。 > 因此,我必须使用一次性令牌对上述应用程序进行身份验证。因此,我计划通过启用和来实现Spring OAuth2。对于每个应用程序客户端,我将生成一个令

  • 问题内容: 我有一个旧版应用程序,该应用程序通过网络异步接收用户名/密码请求。由于我已经将用户名和密码存储为变量,因此在Linux(Debian 6)上通过PAM进行身份验证的最佳方法是什么? 我尝试编写自己的对话功能,但不确定将密码输入其中的最佳方法。我已经考虑过将其存储在appdata中,并从pam_conv结构中引用它,但是几乎没有关于该操作的文档。 有没有一种简单的方法来对用户进行身份验证

  • 问题内容: 我想在我的Java应用程序中使用Windows NTLM认证来透明地认证Intranet用户。如果使用浏览器(单点登录),用户将不会注意到任何身份验证。 我发现了一些具有NTLM支持的库,但是不知道要使用哪个库: http://spnego.sourceforge.net/ http://sourceforge.net/projects/ntlmv2auth/ http://jcifs