您可以使用 cookie 来存储令牌,而不是本地存储或会话存储,但这并不能保证其安全。即使对 cookie 或本地存储进行加密也不是万无一失的机制,因为加密密钥要么驻留在客户端,要么从服务器传递。这使得它容易被修改。
为了实现处理令牌的安全机制,我建议您看看在这个答案 https://stackoverflow.com/questions/31611072/how-to-secure-the-javascript-api-access-token
为了替代本地存储或会话存储,您可以使用 cookie,如下所示:
你可以安装这个包https://www.npmjs.com/package/ng2-cookies https://www.npmjs.com/package/ng2-cookies
然后您只需按照以下步骤操作即可
import { Cookie } from 'ng2-cookies/ng2-cookies';
//setter for token
Cookie.set('jwtToken', 'tokenValue');
//getter for token
let token = Cookie.get('jwtToken');
//delete token cookie
Cookie.delete('jwtToken');
或者你可以安装NGX Cookie 服务 https://www.npmjs.com/package/ngx-cookie-service适用于 Angular 4 及以上版本
Install
npm install ngx-cookie-service --save
导入并注入到您的组件中
import { CookieService } from 'ngx-cookie-service';
export class AppComponent implements OnInit {
constructor( private cookieService: CookieService, private _authService: AuthService ) { }
ngOnInit(): void {
//call your auth service to get the token, I have made a call to a dummy auth service to fetch the token
var token = _authService.GetToken();
//Set auth token cookie
this.cookieService.set( 'authToken', token );
//get auth token cookie
this.cookieValue = this.cookieService.get('authToken');
}
}