angular - 如何在http请求 Angular 添加 token

标签 angular spring jwt

我正在尝试使用 angluar 和 spring boot 进行登录。我使用 JWT 身份验证,在成功验证后我得到了 token 作为响应。提交登录后,我将重定向到另一个网址,但我需要将不记名 token 添加到网址中,否则它会返回匿名用户。我是 Angular 的新手,请告诉我如何将 token 添加到请求中。

登录服务

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);
    });
}

Response

如何在用户信息中添加此 token ,请帮助我。

最佳答案

将您的 token 存储在 localStorage 中:

localStorage.setItem('token', 'yourToken');

并使用拦截器在请求中设置 token :

@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);
    }
}

关于angular - 如何在http请求 Angular 添加 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63167450/

相关文章:

azure - 如何使用 Azure DevOps 的 MSAL.js 获取有效的 AAD v2 token

javascript - 无需身份验证即可使用 jwt 保护 api key

java - 如何将表单元素映射到两个pojo对象

java - Spring Data JPA 奇怪的行为

javascript - 以 Angular 2 格式化货币输入

Angular 5 - 有条件的必需文本区域

java - 将使用 Jsp、Servlet 和 mySQL 构建的 Web 应用程序转换为使用 Spring 和 Hibernate 构建的 Web 应用程序很难吗?

node.js - JWT 撤销信息存放在哪里,mongoDB 还是 Redis?

angular - 我可以获得使用 cypress 创建的测试列表吗?

javascript - 在可定制的 Angular 数据表中使用条件图标