V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
johnniang
V2EX  ›  Java

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

  •  
  •   johnniang · 2017-12-12 10:55:56 +08:00 · 14019 次点击
    这是一个创建于 2299 天前的主题,其中的信息可能已经有所发展或是发生改变。

    @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

    7 条回复    2019-04-28 23:20:01 +08:00
    johnniang
        1
    johnniang  
    OP
       2017-12-12 11:17:29 +08:00 via Android
    global-method-enable 已经设置为 true 了
    letitbesqzr
        2
    letitbesqzr  
       2017-12-12 11:20:32 +08:00
    你看看是不是因为被拦截下来没权限 跳转到一个"未授页面" 那个"未授页面" 是 404
    johnniang
        3
    johnniang  
    OP
       2017-12-12 13:20:59 +08:00
    @letitbesqzr 在启动日志里面直接没有这个 /api/v1/users 这个 API 了,而且获取了 token 访问也没有结果,其他的 API 没有问题。其次,Swagger-ui 里面自然也没有这个 API。
    johnniang
        4
    johnniang  
    OP
       2017-12-12 17:05:49 +08:00 via Android
    up
    johnniang
        5
    johnniang  
    OP
       2017-12-12 21:06:04 +08:00 via Android
    @letitbesqzr 搞定了,因为 Java 代理的原因
    jiangydev
        6
    jiangydev  
       2019-04-28 18:09:20 +08:00
    @johnniang 题主,你好,我也遇到了同样的问题,加了 @PreAuthorize 的接口就不初始化,请问你是怎么解决的?
    jiangydev
        7
    jiangydev  
       2019-04-28 23:20:01 +08:00
    已解决
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5324 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 08:14 · PVG 16:14 · LAX 01:14 · JFK 04:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.