johnniang
V2EX  ›  Java

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

  •  
  •   johnniang · Dec 12, 2017 · 15118 views
    This topic created in 3097 days ago, the information mentioned may be changed or developed.

    @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 replies    2019-04-28 23:20:01 +08:00
    johnniang
        1
    johnniang  
    OP
       Dec 12, 2017 via Android
    global-method-enable 已经设置为 true 了
    letitbesqzr
        2
    letitbesqzr  
       Dec 12, 2017
    你看看是不是因为被拦截下来没权限 跳转到一个"未授页面" 那个"未授页面" 是 404
    johnniang
        3
    johnniang  
    OP
       Dec 12, 2017
    @letitbesqzr 在启动日志里面直接没有这个 /api/v1/users 这个 API 了,而且获取了 token 访问也没有结果,其他的 API 没有问题。其次,Swagger-ui 里面自然也没有这个 API。
    johnniang
        4
    johnniang  
    OP
       Dec 12, 2017 via Android
    up
    johnniang
        5
    johnniang  
    OP
       Dec 12, 2017 via Android
    @letitbesqzr 搞定了,因为 Java 代理的原因
    jiangydev
        6
    jiangydev  
       Apr 28, 2019
    @johnniang 题主,你好,我也遇到了同样的问题,加了 @PreAuthorize 的接口就不初始化,请问你是怎么解决的?
    jiangydev
        7
    jiangydev  
       Apr 28, 2019
    已解决
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2863 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:59 · PVG 09:59 · LAX 18:59 · JFK 21:59
    ♥ Do have faith in what you're doing.