Javascript AngularJS:页面刷新时保留登录信息
我试图在页面刷新时保留用户信息。为此,我使用了Javascript AngularJS:页面刷新时保留登录信息,javascript,html,angularjs,login,cookiestore,Javascript,Html,Angularjs,Login,Cookiestore,我试图在页面刷新时保留用户信息。为此,我使用了cookieStore。因此,Angular应用程序中的跑步模块如下所示 .run(['$rootScope', '$cookieStore', '$state', function($rootScope, $cookieStore, $state) { $rootScope.$on('$stateChangeStart', function(event, toState, toParams, $location){ var
cookieStore
。因此,Angular应用程序中的跑步模块如下所示
.run(['$rootScope', '$cookieStore', '$state', function($rootScope, $cookieStore, $state) {
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, $location){
var requireLogin = toState.data.requireLogin;
if(typeof $rootScope.user == 'undefined'){
$rootScope.user=$cookieStore.get("user");
$rootScope.sessionid=$cookieStore.get("session");
}
if(requireLogin && typeof $rootScope.user === 'undefined'){
event.preventDefault();
$state.go('login', null, {notify: false}).then(function(state) {
$rootScope.$broadcast('$stateChangeSuccess', state, null);
});
}
});
我想从中实现的两个主要目标是
用户
和会话
信息If语句
给出错误,第二个If语句
不起作用
因此,当用户第一次尝试访问任何页面而不进入登录页面时,它不会重定向到登录页面,因为第一个if语句中的代码失败,第二个if
语句不起作用
如何同时实现这两种功能
谢谢您可以创建一个authInterceptor
工厂并将其推入interceptors
此方法将始终检查用户是否在每个页面上登录,如果用户未通过身份验证,则将用户抛出登录页面
用于全局错误处理、身份验证或任何类型的
请求或请求的同步或异步预处理
在对响应进行后处理时,最好能够拦截
在将请求移交给服务器之前进行请求,并在提交之前进行响应
它们被移交给启动这些应用程序的应用程序代码
请求。拦截器利用promise API来满足同步和异步预处理的需求
了解更多关于
通过上述机制,您可以使用Auth
服务在任何控制器
或指令
中获取用户
信息,如下所示:
.controller('MainCtrl', function ($scope, Auth) {
$scope.currentUser = Auth.getCurrentUser;
});
在模板文件中:
<div ng-controller="MainCtrl">
<p> Hi {{currentUser().name}}!</p>
</div>
你好{{currentUser().name}}
注意:您需要创建一个适当的REST API,以便获得正确的用户数据我将研究如何使用ngStorage。我使用sessionStorage对象,即使在刷新时也会保留数据。如果您需要进一步的实施例子,请让我知道,但文件是伟大的
谢谢。我会关注这一点。我的大多数应用程序都会使用它,不会出现问题。我建议在工厂包装,这样你就可以注射了。类似于“storageService”,然后调用$scope.something=storageService.something。等等,谢谢。我试试看。
<div ng-controller="MainCtrl">
<p> Hi {{currentUser().name}}!</p>
</div>