@PreAuthorize("hasAuthority('ROLE_USER')")用在 Controller 上,将会导致 Controller 不被初始化,不明白到底是为什么

2017-12-12 10:55:56 +08:00
 johnniang

@RestController("userControllerV1") @RequestMapping("/api/v1/users") public class UserController {

    @GetMapping("/me")
    @ApiOperation("查询用户详情")
    @PreAuthorize("hasAuthority('ROLE_USER')")
    public User getDetails(Authentication authentication) {
	    if (logger.isDebugEnabled()) {
		    logger.debug("Principal class: {}", authentication.getClass());
	    }
	    return (User) authentication.getPrincipal();
    }

}

一旦去掉 @PreAuthorize 注解就能访问到,否则授权后直接 404

14059 次点击
所在节点    Java
7 条回复
johnniang
2017-12-12 11:17:29 +08:00
global-method-enable 已经设置为 true 了
letitbesqzr
2017-12-12 11:20:32 +08:00
你看看是不是因为被拦截下来没权限 跳转到一个"未授页面" 那个"未授页面" 是 404
johnniang
2017-12-12 13:20:59 +08:00
@letitbesqzr 在启动日志里面直接没有这个 /api/v1/users 这个 API 了,而且获取了 token 访问也没有结果,其他的 API 没有问题。其次,Swagger-ui 里面自然也没有这个 API。
johnniang
2017-12-12 17:05:49 +08:00
up
johnniang
2017-12-12 21:06:04 +08:00
@letitbesqzr 搞定了,因为 Java 代理的原因
jiangydev
2019-04-28 18:09:20 +08:00
@johnniang 题主,你好,我也遇到了同样的问题,加了 @PreAuthorize 的接口就不初始化,请问你是怎么解决的?
jiangydev
2019-04-28 23:20:01 +08:00
已解决

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/414018

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX