用户登录后重定向

2024-02-07

我对 Angular 还很陌生,现在我只是想按照我的意愿设置所有路线并使其工作。

Setup:当用户导航到某些页面时(/settings对于此示例)应用程序应检查是否有用户已登录。如果有则照常继续。否则用户应该转到登录页面(/login).

我想要什么:用户成功登录后,他们应该转到他们最初尝试访问的页面(/settings)

我的问题:是否有一种“Angular 方式”来记住用户试图前往的位置?

相关代码:

app.js

  .when('/settings', {
      templateUrl: '/views/auth/settings.html',
      controller: 'SettingsCtrl',
      resolve: {
        currentUser: function($q, $location, Auth) {
          var deferred = $q.defer();

          var noUser = function() {
            //remember where the user was trying to go
            $location.path("/login")
          };

          Auth.checkLogin(function() {
            if (Auth.currentUser()) {
              deferred.resolve(Auth.currentUser());
            } else {
              deferred.reject(noUser());
            }
          });

          return deferred.promise;
        }
      }
    })

login.js

  $scope.submit = function() {
    if(!$scope.logInForm.$invalid) {
      Auth.login($scope.login, $scope.password, $scope.remember_me)
      //go to the page the user was trying to get to
    }
  };

非常感谢约翰·林德奎斯特视频 http://www.youtube.com/watch?v=P6KITGRQujQ这让我走到了这一步。


首先,您不想将用户重定向到登录页面。

单页 Web 应用程序中的理想流程如下:

  1. 用户访问网站。该网站回复了静态资源 特定路线的角度应用程序(例如/profile/edit)。

  2. 控制器(对于给定的路由)使用 $http、$route 或其他机制调用 API(例如,通过 GET 到 /api/v1 使用登录用户帐户的详细信息预先填写编辑个人资料表单/用户/个人资料)

  3. 如果/当客户端从 API 收到 401 时,显示一个模式 登录并重播 API 调用。

  4. API 调用成功(在这种情况下,用户可以查看其帐户的预填充编辑个人资料表单。)

你怎么能做到#3?答案是$http响应拦截器.

用于全局错误处理、身份验证或任何类型的目的 接收到的响应的同步或异步预处理,它是 希望能够在之前拦截 http 请求的响应 它们被移交给启动这些的应用程序代码 要求。这响应拦截器利用 Promise API 来 满足同步和异步预处理的需求。

http://docs.angularjs.org/api/ng.$http http://docs.angularjs.org/api/ng.%24http

既然我们知道理想的用户体验应该是什么,那么我们该如何去做呢?

这里有一个例子:http://witoldsz.github.com/angular-http-auth/ http://witoldsz.github.com/angular-http-auth/

该示例基于这篇文章:

http://www.espeo.pl/2012/02/26/authentication-in-angularjs-application http://www.espeo.pl/2012/02/26/authentication-in-angularjs-application

祝你好运,快乐的角度!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用户登录后重定向 的相关文章