redis整合jwt已处理重复获取token
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了redis整合jwt已处理重复获取token,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4252字,纯文字阅读大概需要7分钟。
内容图文
![redis整合jwt已处理重复获取token](/upload/InfoBanner/zyjiaocheng/865/1eab97667b7c4898b436cf854665eb06.jpg)
1、jwt依赖
<dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.4.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
2、service
import com.example.vuetest01.library.entity.Userregister; import com.baomidou.mybatisplus.extension.service.IService; /** * <p> * 服务类 * </p> * * @author IJun * @since 2021-01-20 */ public interface UserregisterService extends IService<Userregister> { public void userLogin(Userregister userregister); }
3、serviceImpl
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.example.vuetest01.library.entity.Userregister; import com.example.vuetest01.library.mapper.UserregisterMapper; import com.example.vuetest01.library.service.UserregisterService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.example.vuetest01.library.utils.JWTUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.redis.core.BoundValueOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.Map; /** * <p> * 服务实现类 * </p> * * @author IJun * @since 2021-01-20 */ @Service public class UserregisterServiceImpl extends ServiceImpl<UserregisterMapper, Userregister> implements UserregisterService { @Autowired private UserregisterMapper mapper; @Autowired @Qualifier("redisTemplates") private RedisTemplate redisTemplate; @Override public void userLogin(Userregister userregister) { // JSONObject jsonObject=new JSONObject(); boundValueOps 获取对象 //redi获取token System.out.println("------------------service"); Object users = redisTemplate.opsForValue().get("token"); System.out.println(users+"sssssssss"); // Object o = users.get(); if (users == null){ //数据库查询 QueryWrapper<Userregister> wrapper=new QueryWrapper<>(); wrapper.eq("username",userregister.getUsername()); Userregister userregister1= mapper.selectOne(wrapper); if ( userregister1 == null){ throw new RuntimeException("登录用户不存在"); } if (! userregister1.getPassword().equals(userregister.getPassword())){ throw new RuntimeException("登录密码输入错误"); } //第一步 token Map<String,String> map1=new HashMap<>(); map1.put("username",userregister1.getUsername()); map1.put("password",userregister1.getPassword()); String token = JWTUtils.getToken(map1); System.out.println("aaaaaa"+token); //顺便存入redis中 redisTemplate.opsForValue().set("token",token); System.out.println("从数据据中取值..."); }else { System.out.println("从缓存中获取数据..."); try { JWTUtils.verify(redisTemplate.opsForValue().get("token").toString()); System.out.println("缓存中数据有效..."); } catch (Exception e) { System.out.println("数据失效...设置重新的获取"); } } } }
5、controller
@Autowired private UserregisterService userregisterService; @PostMapping("/register") @ResponseBody @CrossOrigin public void ss(@RequestBody @Validated Userregister userregister ){ System.out.println("前端传的用户名"+userregister.getUsername()); System.out.println("前端传的密码"+userregister.getPassword()); System.out.println("执行成功!"); System.out.println(Md5Utils.inputPassToDBPass(userregister.getPassword(), "zxc123")); userregister.setPassword(Md5Utils.inputPassToDBPass(userregister.getPassword(), "zxc123")); userregisterService.saveOrUpdate(userregister); } @Autowired @Qualifier("redisTemplates") private RedisTemplate redisTemplate; @GetMapping("/login") @ResponseBody //@CrossOrigin @RequestBody @Validated public Object login( Userregister userregister){ // session.setAttribute(Consts.NAME,userregister.getUsername()); System.out.println("进入login..."); JSONObject jsonObject=new JSONObject(); Map<String,Object> map=new HashMap<>(); try { userregisterService.userLogin(userregister); //------------token String token= redisTemplate.opsForValue().get("token").toString(); jsonObject.put(Consts.CODE,201); jsonObject.put(Consts.MSG,"认证成功"); jsonObject.put("token",token);// -------------------- } catch (Exception e) { jsonObject.put(Consts.CODE,500); jsonObject.put(Consts.MSG,"认证失败"); } return jsonObject; }
6、jwt、redis配置类访问上一篇、不重复写了,重点代码已粘贴。
内容总结
以上是互联网集市为您收集整理的redis整合jwt已处理重复获取token全部内容,希望文章能够帮你解决redis整合jwt已处理重复获取token所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。