springboot生成token方法,springbootjwt token
为什么引入token机制?
在进行登录验证时,我们需要会议或甜饼干会话进行验证,客户端包括浏览器、app、微信小程序、公众号,只有浏览器有会议和甜饼干机制,当我们脱离浏览器用应用等向服务端发请求就没有会议和甜饼干机制,这时我们就需要使用代币令牌进行登录验证。
代码实现
先建个跑龙套包,并创建TokenUtil类用于生成代币
TokenUtil类代码
包com。qcby。util导入com。qcby。实体。用户;导入Java。util。hashmap导入Java。util。地图;导入Java。util。uuid公共类TokenUtil { /** *创建地图用于存储所有的令牌* * token-User */private static MapString,用户令牌映射=new HashMap();/** * 生成令牌,存储令牌用户对应关系* 返回代币令牌* @ param User * @ return */public static String generate token(User User){//生成唯一不重复的字符串String token=UUID.randomUUID().toString();tokenMap.put(令牌,用户);返回令牌;} /** * 验证代币是否合法* @ param token * @ return */public static boolean verify(字符串令牌){ return token map。包含密钥(令牌);} /** * 根据代币获取用户信息* @ param token * @ return */public static User getUser(String token){ return token map。get(token);} }登录接受者类代码
包com。qcby。截击机;导入com。qcby。util。token util导入org。spring框架。豆子。工厂。注释。自动连线;导入org。spring框架。网络。方法。处理程序方法;导入org。spring框架。网络。servlet。处理者受体;导入org。spring框架。网络。servlet。模型和视图;导入javax。servlet。http。http servlet请求;导入javax。servlet。http。http servlet响应;导入javax。servlet。http。http会话;公共类登录接收器实现处理程序拦截器{//控制器逻辑执行之前@ Override public boolean preHandle(http servlet请求请求、HttpServletResponse响应、对象处理程序)引发异常{ System.out.println(preHandle . );字符串uri=请求。get request uri();System.out.println(当前路径uri);/* * *处理程序方法=控制器中标注@RequestMapping的方法* 需要配置静态资源不拦截时,添加这块逻辑=前后端分离项目*/if(!(HandlerMethod方法的处理程序实例)){返回true}字符串令牌=请求。get头( qcby-token );如果(!TokenUtil.verify(token)) { //未登录跳转到登录界面抛出新的RuntimeException(no login!);}否则{返回true} }//控制器逻辑执行完毕但是视图解析器还未进行解析之前@ Override public void post handle(http servlet请求http servlet请求,http servlet响应http servlet响应,Object o,ModelAndView modelAndView)引发异常{系统。出去。println( post句柄.);}//控制器逻辑和视图解析器执行完毕@完成后覆盖public void(http servlet请求http servlet请求,http servlet响应http servlet响应,对象o,异常e)抛出异常{系统。出去。完成后打印.);}}实现类
@ rest控制器@请求映射(用户)公共类用户控制器{ @ auto wired private UserService UserService;@ApiOperation(用户登录接口)@RequestMapping(value=login ,method={RequestMethod .获取,请求方法. POST}) public MapString,Object log in(User User){ MapString,Object map=new HashMap();map.put(code ,0);if(字符串实用程序。isempty(用户。get username()) string utils。isempty(用户。get password()){ map。put( msg ,用户或密码为空!);返回地图;}查询包装器用户查询包装器=新查询包装器();queryWrapper.eq(username ,user.getUsername()).eq(密码,用户。get password());用户用户1=用户服务。获取一个(查询包装器);if(user1!=null){ String token=token util。生成令牌(用户1);map.put(cod ,1);map.put(数据,用户1);map.put(token ,令牌);}else { map.put(msg ,用户名或密码错误!);}返回图;}}拦截器类可以参考这篇文章,这个代币验证就是在拦截器上改动的。
跳羚拦截器实现登录拦截
需要有邮递员验证
到此这篇关于跳羚实现代币登录的示例代码的文章就介绍到这了,更多相关跳羚令牌登录内容请搜索盛行信息技术以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行它!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。