请选择 进入手机版 | 继续访问电脑版

Java实现基于token认证(springboot)

[复制链接]
三兄弟沙发谢洪江 发表于 2020-12-31 19:20:20 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
Java实现基于token认证(springboot)

为什么要用 Token?
可以办理哪些问题呢?

  • Token 完全由应用管理,所以它可以避开同源战略
  • Token 可以制止 CSRF 攻击(http://dwz.cn/7joLzx)
  • Token 可以是无状态的,可以在多个服务间共享
1、引入依赖

2设置逾期时间和秘钥

3实现token
  1. public static String gettoken(String name ,String password) {        String token = "";        Date time = new Date(System.currentTimeMillis() + EXPIRE_DATE);        Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);        //设置头部信息        Map header = new HashMap();        header.put("typ", "JWT");        header.put("alg", "HS256");        //携带username,password信息,生成签名        try {            token = JWT.create()                    .withHeader(header)                    .withClaim("username", name)                    .withClaim("password", password)                    .withExpiresAt(time)                    .sign(algorithm);           return token;        } catch (Exception e) {            e.printStackTrace();             return  null;        }    }
复制代码
4验证token
  1. public static boolean verify(String token){        /**         * @desc   验证token,通过返回true         * @create 2019/1/18/018 9:39         * @params [token]需要校验的串         **/        try {            Algorithm algorithm = Algorithm.HMAC256(TOKEN_SECRET);            JWTVerifier verifier = JWT.require(algorithm).build();            DecodedJWT jwt = verifier.verify(token);            //String signature = jwt.getSignature();           // System.out.println(signature);            return true;        }catch (Exception e){            e.printStackTrace();            return  false;        }    }
复制代码
5拦截器
  1. public class TestHandle implements HandlerInterceptor {    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {        String access_token = request.getHeader("access_token");        if(access_token == null){            return false;        }        System.out.println("拦截器"+access_token);        boolean verify = Test.verify(access_token);        if(verify){            return true;        }else{            request.getRequestDispatcher("/index").forward(request,response);            return false;        }    }
复制代码
6实现WebMvcConfigurer接口的拦截方式你们自己写
最后客户携带token请求服务

各种形式token可以参考此链接

来源:https://blog.csdn.net/Q854031191/article/details/111942647
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )