首先,我们需要安装angular-cookies的依赖,可以使用以下命令在Node.js环境下进行安装:
$ npm install --save angular-cookies
将angular-cookies的库文件添加到你的项目中,通常是在index.html文件中添加以下代码:
创建一个Angular模块来管理所有应用程序的组件和服务,并确保它包括angular-cookies作为依赖项:
angular.module('app', ['ngCookies']);
在你的Angular应用程序中创建一个服务来处理HTTP请求并生成JWT令牌,以下是一个示例代码:
angular.module('app')
.factory('authService', function ($http, $cookies) {
var service = {};
// 登录函数
service.login = function (username, password, callback) {
$http.post('/api/authenticate', { username: username, password: password })
.success(function (response) {
// 设置JWT令牌为cookie并将其附加到所有后续HTTP请求中
$cookies.put('token', response.token);
// 成功回调函数
callback(response);
});
};
// 注销函数
service.logout = function () {
// 删除JWT令牌cookie和清空所有缓存数据
$cookies.remove('token');
};
// 获取当前用户数据函数
service.getCurrentUser = function (callback) {
$http.get('/api/me')
.success(function (response) {
// 成功回调函数
callback(response);
});
};
return service;
});
使用$httpProvider的拦截器将JWT令牌添加到所有后续HTTP请求中。以下是一个示例代码:
angular.module('app')
.config(function ($httpProvider) {
$httpProvider.interceptors.push(function ($q, $cookies) {
return {
'request': function (config) {
// 将JWT令牌附加到HTTP请求头中
config.headers['Authorization'] = 'Bearer ' + $cookies.get('token');
return config;
}
};
});
});
最后,在你的Angular应用程序中使用服务进行登录、注销和获取当前用户数据。例如:
angular.module('app')
.controller('LoginController', function ($scope, authService) {
$scope.login = function () {
authService.login($scope.username, $scope.password, function (response) {
console.log(response);
});
};
});
以上是Angular中的