Spring Security OAuth2 出现 Completed 405 METHOD_NOT_ALLOWED

在一开始把OAuth2的认证服务器和资源服务器搭在同一个项目中,一开始使用/oauth/token使用password方式能够成功取得jwt Token但是之后在写了一个controller之后发现认证请求已经无效了
浏览器端报405

POST http://localhost:8081/oauth/token 405

后端显示方法不支持

2019-03-05 08:45:14.030  WARN 8564 --- [nio-8081-exec-3] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'POST' not supported]
2019-03-05 08:45:14.031 DEBUG 8564 --- [nio-8081-exec-3] o.s.web.servlet.DispatcherServlet        : Completed 405 METHOD_NOT_ALLOWED
2019-03-05 08:45:14.034 DEBUG 8564 --- [nio-8081-exec-3] o.s.web.servlet.DispatcherServlet        : "ERROR" dispatch for POST "/error", parameters={grant_type:[password], username:[user], password:[123456], scope:[all]}
2019-03-05 08:45:14.039 DEBUG 8564 --- [nio-8081-exec-3] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2019-03-05 08:45:14.066 DEBUG 8564 --- [nio-8081-exec-3] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json, application/*+json, application/json, application/*+json]
2019-03-05 08:45:14.067 DEBUG 8564 --- [nio-8081-exec-3] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [{timestamp=Tue Mar 05 08:45:14 CST 2019, status=405, error=Method Not Allowed, message=Request metho (truncated)...]
2019-03-05 08:45:14.100 DEBUG 8564 --- [nio-8081-exec-3] o.s.web.servlet.DispatcherServlet        : Exiting from "ERROR" dispatch, status 405

明显是因为我自定义的controller方法出问题了。
因此我先去查看/oauth/token的入口类 TokenEndPoint.java 发现上面有@FrameworkEndpoint注解,此注解和@controller类似,但是是用于框架级的路由注解,不会和用户定义的冲突,因此我怀疑我自己的注解把 OAuth2的注解给覆盖了。

在最后的测试下发现由于我自己的api采用rest风格 在类上写着 @RestController(“abc”) 于是在方法上只写了 @GetMapping 后面没有value值,所以导致问题。

最后把 restcontroller 上的 value 移到 getmapping 中问题解决

@RestController//后面可以不加value
public class UserController {

    /**
     * 获取所有信息
     * @return
     */
    @GetMapping("/user")//后面必须加value
    public List<UserInfo> queryAll(){
        UserInfo u1 = new UserInfo(1,"uuz",17);
        UserInfo u2 = new UserInfo(1,"uuz",17);
        UserInfo u3 = new UserInfo(1,"uuz",17);
        List<UserInfo> us = new ArrayList<>();
        us.add(u1);
        us.add(u2);
        us.add(u3);
        return us;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值