【发布时间】:2020-09-27 06:38:30
【问题描述】:
当我在控制器中添加@PreAuthorize("hasRole('ROLE_SUPER_ADMIN')") 并从角度调用时,它不起作用,但从邮递员调用时它很好。
@GetMapping("/getAllOrgniz")
@PreAuthorize("hasRole('ROLE_SUPER_ADMIN')")
public ResponseEntity<?> allOrganization () {
return organizationService.getAllOrganization();
}
来自 Angular:
getAllOrganizationList ():void {
this.organaigationService.getAll().subscribe(data=>{
this.organizations = data;
});
}
组织服务:
public getAll() {
return this.httpService.getWithToken(this.getAllUrl);
}
HttpService:
getWithToken (url:any): Observable<any> {
let token = this.tokenStoreService.getToken();
console.log(token);
return this.http.get<any>(this.URL+url,this.httpBearerHeader);
}
Spring boot 控制台显示如下
this:com.crm.security.jwt.AuthEntryPointJwt:未经授权的错误: 访问此资源需要完全身份验证
角度日志:
core.js:6014 错误 HttpErrorResponse {标头:HttpHeaders,状态: 401,状态文本:“确定”,网址: “http://localhost:8085/api/organization/getAllOrgniz”,好的: 假,...}标头:HttpHeaders {normalizedNames:Map(0),lazyUpdate: 空,lazyInit:ƒ}状态:401statusText:“OK”url: "http://localhost:8085/api/organization/getAllOrgniz"ok: 假名: “HttpErrorResponse”消息:“Http 失败响应 http://localhost:8085/api/organization/getAllOrgniz: 401 OK"错误: {时间戳:“2020-06-08T10:14:19.917+00:00”,状态:401,错误: “未经授权”,跟踪: “org.springframework.security.access.AccessDeniedEx…va:61)↵ 在 java.lang.Thread.run(Thread.java:748)↵”,消息:“错误: 未经授权”,......
【问题讨论】:
-
比较Angular和Postman发送的请求,有什么区别?浏览器控制台中是否记录了任何错误?
-
添加角度日志
-
问题一:“比较一下Angular和Postman发送的请求,有什么区别?”。另外,
this.httpBearerHeader是什么? -
httpBearerHeader = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Authorization': 'Bearer' + this.tokenStoreService.getToken() }) };跨度>
-
您使用 Angular 的 API 调用未经过身份验证,请尝试将您的凭据与您的请求一起发送
标签: angular spring-boot spring-security