我对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的the video,它让我走到了今天。
发布于 2013-03-07 09:42:11
首先,您不希望将用户重定向到登录页面。
单页web应用的理想流程如下:
你怎么才能做到#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
祝你好运,祝你天使快乐!
https://stackoverflow.com/questions/15260439
复制相似问题