Redirect 用户登录后重定向

Redirect 用户登录后重定向,redirect,login,angularjs,angularjs-routing,angularjs-authentication,Redirect,Login,Angularjs,Angularjs Routing,Angularjs Authentication,我对Angular很陌生,现在我只是想把我所有的路线都设置好,并按照我的意愿工作 设置: 当用户导航到某些页面时(本例中为/settings),应用程序应检查是否有用户已登录。如果有,照常继续。否则,用户应转到登录页面(/login) 我想要什么: 用户成功登录后,应转到最初尝试访问的页面(/settings) 我的问题: 有没有一种“有角度的方式”来记住用户试图去的地方 相关代码: app.js .when('/settings', { templateUrl: '/views

我对Angular很陌生,现在我只是想把我所有的路线都设置好,并按照我的意愿工作

设置: 当用户导航到某些页面时(本例中为
/settings
),应用程序应检查是否有用户已登录。如果有,照常继续。否则,用户应转到登录页面(
/login

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

我的问题: 有没有一种“有角度的方式”来记住用户试图去的地方

相关代码:

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
    }
  };

非常感谢John Lindquist让我走了这么远。

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

单页web应用程序中的理想流程如下所示:

  • 用户访问网站。该网站将使用的静态资产进行回复 特定路线的角度应用程序(例如/外形/编辑)

  • 控制器(针对给定路由)使用$http、$route或其他机制(例如,通过GET-to/API/v1/users/Profile预先填写编辑配置文件表单,其中包含登录用户帐户的详细信息)调用API

  • 如果/当客户端从API接收401时,向 登录,然后重播API调用

  • API调用成功(在这种情况下,用户可以查看其帐户的预填充编辑配置文件表单。)

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

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

    既然我们知道了理想的用户体验应该是什么,我们该怎么做呢

    这里有一个例子:

    该示例基于本文:


    祝你好运,祝你成角愉快

    您可以将此信息存储在$rootScope或中。我不同意您关于“不想重定向”的说法。我正在使用http拦截器捕获401&显示登录模式。它有一个严重的问题,我的客户端不会接受-在失败的页面上,有应用程序的可见部分-ng视图呈现,但组件是从API请求资源的401的空cos。但页面(界面)对完全没有特权的访问者也是可见的。