Javascript 如何在AngularJS中存储用户会话?
我刚刚开始使用AngularJS,我正在尝试在我的AngularApp上存储用户会话 提交用户名和密码的第一步是有效的。 之后,我将从服务中检索到的Javascript 如何在AngularJS中存储用户会话?,javascript,angularjs,authentication,session,cookies,Javascript,Angularjs,Authentication,Session,Cookies,我刚刚开始使用AngularJS,我正在尝试在我的AngularApp上存储用户会话 提交用户名和密码的第一步是有效的。 之后,我将从服务中检索到的用户名存储在$rootScope中。 下一页可以显示存储的用户名 但是刷新后,$rootScope为空 我正在尝试做一个尽可能简单的身份验证系统 myApp.controller('loginController', ['$scope', '$rootScope', '$location', 'AuthService', '$route', fu
用户名
存储在$rootScope
中。
下一页可以显示存储的用户名
但是刷新后,$rootScope
为空
我正在尝试做一个尽可能简单的身份验证系统
myApp.controller('loginController', ['$scope', '$rootScope', '$location', 'AuthService', '$route',
function ($scope, $rootScope, $location, AuthService, $route) {
$scope.login = function (credentials) {
AuthService.login(credentials).then(function (response) {
if(response.data == "0"){
alert("Identifiant ou mot de passe incorrect");
}
else {
// response.data is the JSON below
$rootScope.credentials = response.data;
$location.path("/");
}
});
};
}]);
AuthService.login()
发出$http
请求
JSON
HTML:
<div>Welcome {{ credentials.user_display_name }}!</div>
欢迎{{credentials.user\u display\u name}!
我尝试了很多教程,但我无法使课程正常进行。
我已经使用了UserApp,但对我来说不合适。我想创建自己的简单身份验证。
$rootScope
在页面刷新时将始终重置,因为它是一个单页应用程序
您需要使用客户端持久化的东西,例如cookie或会话存储(因为它们都有过期时间)。请查看$cookieStore
的文档:
请记住,敏感会话信息应加密。您可以使用
AngularJS模块,使Web存储以角度方式工作。
包含两个服务:$localStorage和$sessionStorage
与其他实现的区别
没有能手和二传手的废话-
就在AngularJS主页上:“与其他框架不同,没有
需要[…]将模型包装在访问器方法中。只是简单的旧
现在,您可以在实现
使用Web存储实现数据持久化
会话存储-我们已经涵盖了这一经常被忽略的问题
编写清晰的代码-以有角度的方式编写,结构良好
考虑到可测试性
无Cookie回退-Web存储在所有应用程序中都随时可用
AngularJS官方支持的浏览器,此类回退在很大程度上是无效的
多余的
下面显示了一个示例
var eS = angular.module('exampleStore', ['localStorage']);
您需要在服务器上创建api来收集当前用户。此api必须返回与登录后的用户对象相同的用户对象
对于要在$routeProvider中保护的每个$route.path,请使用ng init在控制器中调用此api。如果api返回一个对象,请将该对象添加到$rootScope中,否则,请强制用户登录页面。身份验证系统是否可以使用
$cookieStore
的可能副本?我认为$cookieStore
可以使其正常工作。谢谢Andrew。是的,我过去使用过$cookieStore。我认为它更容易受到XSS的攻击
var eS = angular.module('exampleStore', ['localStorage']);