zoukankan      html  css  js  c++  java
  • feign携带token;springboot多模块直接携带认证信息调用参数;shiro/url过滤

    场景:

    security模块、system模块;打成一个jar包,security通过shiro进行登录验证;

    业务:

    第一步:登陆;

    第二步:请求security中queryUser()接口,然后queryUser()接口会调用system模块中的某一个类,比如queryLic();

    问题:

    因为模块之间是通过feign连接的,也就是http请求,所以每一个url都会走security的shiro验证,但是在第二步验证的时候会出现获取不到登陆信息的情况;

    解决方法:

    feign中可以携带token信息,带上去进行验证;

    在security添加配置类:

    import javax.servlet.http.HttpServletRequest;
    
    /**
     * 跨模块获取登录信息
     * author shichangle
     * date 2020/2/20 0020 16:11
     */
    @Configuration
    public class FeignConfig implements RequestInterceptor {
        @Override
        public void apply(RequestTemplate requestTemplate) {
            ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
    
            HttpServletRequest request = requestAttributes.getRequest();
            requestTemplate.header("postman-token",request.getHeader("postman-token"));
            requestTemplate.header("cookie",request.getHeader("cookie"));
        }
    }

    具体shiro认证代码:

         
        //获取当前登陆用户信息
        Subject subject = SecurityUtils.getSubject(); String header = ((HttpServletRequest) request).getHeader("Access-Token"); if (!subject.isAuthenticated()) { logger.error("未登录"); return false; }
  • 相关阅读:
    += 和 =+
    Ubuntu分区方案(菜鸟方案、常用方案和进阶方案)
    Apache ab测试工具使用方法(无参、get传参、post传参)(转)
    硬盘安装ubuntu遇到的问题
    Promise
    A Kill Cord for your Laptop
    python 2week
    PDCA循环原理
    python自学基础1week
    14链表中倒数第k个结点
  • 原文地址:https://www.cnblogs.com/notchangeworld/p/12337371.html
Copyright © 2011-2022 走看看