我正在为我的项目使用Angular,并遇到了身份验证问题。在成功身份验证用户从服务器上检索令牌,并且由于长用户拥有此令牌,他可以访问他需要身份验证的所有地方(我认为这是最好的方法,因为我使用MVC Web API作为后端,我没有会话)。一切正常,直到我关闭我的浏览器,再次启动它$ cookieStore和$ cookies在重启后是空的。
有没有人知道如何制作cookie,或者有更聪明的方法吗?
我创建了一个带有testview的测试控制器,其中我有2个按钮设置并加载$ cookie,然后重新启动它工作,如果我打开一个新窗口,而另一个仍然是它的工作,但我尽快关闭一切下来,coockies是空的。
$scope.Set = function () {
$scope.LoadedData = "test";
$cookies.myFavorite = 'oatmeal';
}
$scope.Load = function () {
var b = $cookies.myFavorite;
console.log("testasdasd" + $cookies);
$scope.LoadedData = $cookies.myFavorite;
}
答案 0 :(得分:3)
有两种类型的Cookie:会话cookie和持久性cookie。
Expires
属性过期。将cookie保存为会话或持久性的决定是服务器端,而不是客户端javascript。
使用.NET Forms身份验证时,可以使用FormsAuthentication.GetAuthCookie
创建cookie,第二个参数确定这是会话还是持久cookie。
答案 1 :(得分:1)
我知道这个问题已经得到解答,但实际上你可以管理cookie持久性客户端。只需$cookieStore。
持久Cookie:
// from your controller
$cookieStore.put('auth_token', token);
// in your module
$http.defaults.headers.common.Authorization = $cookieStore.get('auth_token');
在模块中,我们告诉角色我们想要在每次加载我们网站的任何页面时使用此会话。
编辑:您可能对HTML5 localstorage感兴趣而非Cookie。