angular - 如何在http请求角度添加令牌
问题描述
我正在尝试使用 angluar 和 spring boot 进行登录。我使用 JWT 身份验证,在成功进行身份验证后,我得到了令牌作为响应。提交登录后,我将重定向到另一个 url,但我需要将不记名令牌添加到 url 中,否则它会返回匿名用户。我是 Angular 新手,请告诉我如何将令牌添加到请求中。
登录服务
loginUser(data: Student): Observable<any> {
const url = '/login';
let headers = new HttpHeaders();
headers = headers.set('Content-Type', 'application/text; charset=utf-8');
return this.httpClient.post(this.serverUrl + url, data, {responseType: 'text' as 'json'});
}
getuserInfo(): Observable<any> {
const url = '/userinfo';
return this.httpClient.get(this.serverUrl + url);
}
登录表单提交
登录表格
submitForm(submission: any): void {
console.log(submission);
if (submission && submission.submit) {
delete submission.submit;
}
this.loginService.loginUser(submission)
.subscribe(result => {
console.log(result);
this.userinfo();
}, err => {
alert(err);
});
}
userinfo() {
this.loginService.getuserInfo()
.subscribe(result => {
console.log(result);
}, err => {
alert(err);
});
}
如何在用户信息中添加此令牌,请帮助我。
解决方案
将您的令牌存储在 localStorage 中:
localStorage.setItem('token', 'yourToken');
并使用拦截器在请求中设置令牌:
@Injectable({
providedIn: 'root'
})
export class UserEmulationInterceptor implements HttpInterceptor {
private readonly token: string;
constructor() {
this.token = localStorage.getItem('your_sso_token');
}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (this.token) {
const modReq = req.clone({
setHeaders: {
'your_sso_token': this.token
}
});
return next.handle(modReq);
}
return next.handle(req);
}
}
推荐阅读
- powershell - 压缩文件夹并使用 powershell 将其存档
- java - mcp 918 无法重新编译 linux
- java - Jersey Api 未通过过滤器发送请求
- json - JSON PATCH / Remove:如何从对象中删除特定值?
- spring-boot - Openid-connect 或 SAML 2.0
- ios - 如何将图像导出到 Google 课堂?
- xamarin.forms - 是否可以将 RadioButton 保留为可扩展控件 Xamarin 表单 4.6 的标题
- sql - 如何更新 PostgreSQL 中的 JSON 字段?
- c - C - 获取字符串的所有排列并为每个重复的字符分配一个数字
- python - 您如何使用 object_ids 列表查询 pymongo db?