紫金丨小飞侠
2018-10-17 09:57
采纳率: 50%
浏览 9.3k
已采纳

spring boot oauth2 获取到access_token之后访问资源返回Cannot convert access token to JSON

图片说明已经获取到access_token,携带token访问资源时返回Cannot convert access token to JSON
图片说明
这是什么问题。。。有没有人碰到过,后台也没提示报错之类的

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 紫金丨小飞侠 2019-02-19 17:41
    已采纳

    重新生成RSA加密公钥私钥就好了~

    已采纳该答案
    5 打赏 评论
  • 金字塔顶的蜗牛~ 2021-09-01 17:28

    参考解决方案:
    1、在网关下面建一个类,用于拦截验证token是否过期或者非法
    package com.immo.ymhis.gateway.exception;

    import com.fasterxml.jackson.databind.ObjectMapper;
    import org.springframework.http.MediaType;
    import org.springframework.security.core.AuthenticationException;
    import org.springframework.security.web.AuthenticationEntryPoint;

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.util.HashMap;
    import java.util.Map;

    /**

    • 自定义Token异常信息,用于tokan校验失败返回信息,比如token过期/验证错误

    • @author Jonathan.WQ

    • @date 2021年09月01日

    • /
      public class AuthExceptionEntryPoint implements AuthenticationEntryPoint {

      @Override
      public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws ServletException {

        Map map = new HashMap();
        map.put("code", "401");
        map.put("message", "token非法");
        response.setContentType(MediaType.APPLICATION_JSON_VALUE);
        response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
        try {
            ObjectMapper mapper = new ObjectMapper();
            mapper.writeValue(response.getOutputStream(), map);
        } catch (Exception e) {
            throw new ServletException();
        }
      

      }
      }
      2、然后在配置类上加上这个异常

    package com.immo.ymhis.gateway.config;

    import com.immo.ymhis.gateway.exception.AuthExceptionEntryPoint;
    import com.immo.ymhis.oauth2.common.config.DefaultResourceServerConf;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
    import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;

    @Configuration
    @EnableResourceServer
    public class ResourceServerConfiguration extends DefaultResourceServerConf {

    @Override
    public void configure(ResourceServerSecurityConfigurer resources) {
        resources.resourceId("ymhis");
        resources.authenticationEntryPoint(new AuthExceptionEntryPoint());
    }
    

    }

    3、效果

    img

    img

    打赏 评论
  • 午后阳光Sunny 2019-05-28 11:57

    是设置.sercet() 这里吗?

    1 打赏 评论

相关推荐 更多相似问题