首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用户登录后重定向

用户登录后重定向
EN

Stack Overflow用户
提问于 2013-03-07 07:46:42
回答 1查看 11.2K关注 0票数 17

我对Angular还很陌生,现在我只是想把我所有的路线都设置好,然后按我想要的方式工作。

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

我想要的是:在用户成功登录后,他们应该转到他们最初试图进入的页面(/settings)

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

相关代码:

app.js

代码语言:javascript
复制
  .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

代码语言:javascript
复制
  $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的the video,它让我走到了今天。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-07 09:42:11

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

单页web应用的理想流程如下:

  1. 用户访问网站。网站用特定路线处的angular应用程序的静态资产进行回复(例如,/profile/edit).
  2. The控制器(对于给定路线)使用$http、$route或其它机制对API进行调用(例如,通过GET to /api/v1/users/profile)
  3. If/while用来自已登录用户的帐户的细节预先填充编辑简档表单)。客户端从API401接收,显示登录的模式,并重放API调用。
  4. API调用成功(在这种情况下,用户可以查看为其帐户预先填写的编辑简档表单。)

你怎么才能做到#3?答案是$http Response Interceptors

为了全局错误处理、认证或接收到的响应的任何类型的同步或异步预处理的目的,期望能够在http请求被移交给发起这些请求的应用程序代码之前拦截它们的响应。响应拦截器利用promise apis来满足同步和异步预处理的需求。

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

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

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

该示例基于本文:

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

祝你好运,祝你天使快乐!

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15260439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档