我有两个端点:/login
和/welcome
如果用户已通过身份验证,则他们应该只能访问端点/welcome
。
我的问题是,在浏览器中,/welcome
的状态总是401,即使/login
之前的状态是200。
Angular
public login(): Observable<any> {
const headers = new HttpHeaders({
Authorization: 'Basic ' + window.btoa('linda:pass')
})
return this.http.get(environment.apiBaseUrl + 'login', { headers, responseType: 'text' as 'json' })
}
public welcome(): Observable<any> {
return this.http.get(environment.apiBaseUrl + 'welcome');
}
Spring Boot
第一个
我做错了什么?
1条答案
按热度按时间slwdgvem1#
Spring安全表达式
hasRole("ADMIN")
将在授权规则中添加ROLE_
前缀(可以配置为不同),因此它期望角色为ROLE_ADMIN
,而您定义的用户管理器为.roles("ADMIN")
,这将违反您定义的授权规则,因此您将得到401未授权响应。如果不想更改角色的名称,可以使用另一个Spring安全表达式
hasAuthority(..)
有关详细信息,请查看文档