Token令牌 Redis 案例
生活随笔
收集整理的這篇文章主要介紹了
Token令牌 Redis 案例
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
關(guān)注 “弋凡”(YiFan)微信公眾號吧 記錄簡單筆記 做你的最愛
SpringBoot 整合 Redis 看之前文章
Token 是什么?
token 專業(yè)術(shù)語為 令牌,更通俗來說就相當(dāng)于暗號,一般用于身份驗(yàn)證的時(shí)候,用token更加的安全,
Token 怎么用?
一般通過ajax發(fā)送請求,服務(wù)器接收請求去驗(yàn)證用戶名和密碼,然后返回給客戶端一串字符串(token),客戶端接收這個(gè)token把它存在Cookie 或者Local Storage中
客戶端每次請求資源的時(shí)候需要攜帶這個(gè)token,服務(wù)器去接收這個(gè)token然后去驗(yàn)證,成功則返回請求需要的數(shù)據(jù)
Token 存在 Redis 中
1,導(dǎo)入依賴
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.2.6.RELEASE</version> </dependency>2,編寫 application.properties
# redis 配置 spring.redis.host=127.0.0.1 spring.redis.port=6379server.port=999 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=root spring.thymeleaf.cache = false # 實(shí)體類的包掃描--- 這里使用了 MybatisPlus mybatis-plus.type-aliases-package =com.yifan.pojo3,添加 RedisConfig 以及
封裝好的 RedisUtil(之前文章有敘述)
4,編寫Controller
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.yifan.pao.Result; import com.yifan.pojo.User; import com.yifan.service.UserService; import com.yifan.util.RedisUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest; import java.util.UUID;@Controller public class UserController {@Autowiredprivate UserService userService;@Autowiredprivate RedisUtil redisUtil;@GetMapping("index")public String index(){return "index";}@GetMapping({"/","/login"})public String login(){return "login";}@GetMapping("getInfoToken")@ResponseBodypublic String getinfo(HttpServletRequest request){String token = request.getHeader("token");System.err.println("token ---> "+token);long expire = redisUtil.getExpire(token);System.err.println("expire ---> "+redisUtil.getExpire(token));if(expire > 0L){return "ok";}else {return "error";}}@PostMapping("toindex")@ResponseBodypublic Result index(@RequestParam String name , @RequestParam String password){LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();wrapper.eq(User::getName,name).eq(User::getPassword,password);User one = userService.getOne(wrapper);if(one != null ){String token = UUID.randomUUID()+"";redisUtil.set(token,one,30000L);return new Result(one ,token);} else {return null ;}} }5,這里的 Result是封裝的返回結(jié)果類
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;@Data @AllArgsConstructor @NoArgsConstructor public class Result<T> {private T object;private String data; }6,前端頁面 一個(gè)簡單的登錄頁面
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>登錄頁面</title> </head> <body> <h4>登錄</h4> <p> <span>name:</span> <input type="text" id="name"></p> <p> <span>password:</span> <input type="text" id="password"></p> <p><input type="button" value="login" class="login"></p> <p><input type="button" value="token login" class="tokenlogin"></p> </body> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/2.2.4/jquery.min.js"></script> <script>$(function () {$(".tokenlogin").click(function () {$.ajax({type: "get",url: "getInfoToken",headers:{"token":localStorage.token},success: function (res) {console.log("-->res "+res);if(res == "ok"){// 跳轉(zhuǎn) controller 中的 index 請求window.location.href = "index";}}})});$(".login").click(function () {$.ajax({type: "post",url: "toindex",data: {name:$("#name").val(), password:$("#password").val()},dataType: "json",success: function (res) {// 本地存儲這個(gè)tokenlocalStorage.token=res.data;if(res !=null){window.location.href = "index";}}})})}) </script> </html>7,登錄成功頁面
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><h3>登錄成功了</h3> </body></html>8,效果
end —
快來關(guān)注“弋凡”微信公眾號吧
總結(jié)
以上是生活随笔為你收集整理的Token令牌 Redis 案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简历编写
- 下一篇: MyBatis-Plus 代码生成器