如何在角度js的cookie中存储登录会话ID?

iam*_*ger 1 javascript cookies session angularjs

我有以下代码,我将用户的登录凭据与他的权限(无论他是否是管理员)存储在本地存储中.

.success(function (user) {
            localStorageService.set('localStorageUser', user.username);
            localStorageService.set('localStorageUserRole', user.authorities[0].authority);

            $rootScope.showMenu = true;
            $rootScope.user = user.username;

             if(localStorageService.get('localStorageUserRole') === 'ROLE_ADMIN'){
                 $rootScope.isAdmin = true;                  
             }
             else {
                 $rootScope.isAdmin = false;                     
             }                

            d.resolve();
        })
Run Code Online (Sandbox Code Playgroud)

我想知道如何在cookie中存储用户登录会话ID,并在AngularJS中设置cookie的到期日期.

Huy*_*ham 6

AngularJS已经提供了一个使用cookie的包装器.

您可以访问此页面以了解如何将ngCookies插件添加到您的项目中:https://docs.angularjs.org/api/ngCookies

首先在HTML中包含angular-cookies.js:

您可以从以下位置下载此文件:

谷歌CDN例如

//ajax.googleapis.com/ajax/libs/angularjs/XYZ/angular-cookies.js

然后通过将模块添加为依赖模块来加载应用程序中的模块:

angular.module('app',['ngCookies']);

有了这个,你就准备开始吧!

使用$ cookie非常简单:

$cookies.put('user', user.username);
var username = $cookies.get('user');

//You can set the expired time with the third params
var today = new Date();
var expired = new Date(today);
expired.setDate(today.getDate() + 1); //Set expired date to tomorrow
$cookies.put('user', user.username, {expires : expired });
Run Code Online (Sandbox Code Playgroud)

关于$ cookies的更多信息:https://docs.angularjs.org/api/ngCookies/service/$cookies

  • 为什么要创建一个`今天'?为什么不将expired设置为`new Date();`? (5认同)