日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Token令牌 Redis 案例

發布時間:2025/3/21 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Token令牌 Redis 案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關注 “弋凡”(YiFan)微信公眾號吧 記錄簡單筆記 做你的最愛
SpringBoot 整合 Redis 看之前文章

Token 是什么?

token 專業術語為 令牌,更通俗來說就相當于暗號,一般用于身份驗證的時候,用token更加的安全,

Token 怎么用?

一般通過ajax發送請求,服務器接收請求去驗證用戶名和密碼,然后返回給客戶端一串字符串(token),客戶端接收這個token把它存在Cookie 或者Local Storage中
客戶端每次請求資源的時候需要攜帶這個token,服務器去接收這個token然后去驗證,成功則返回請求需要的數據

Token 存在 Redis 中

1,導入依賴

<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 # 實體類的包掃描--- 這里使用了 MybatisPlus mybatis-plus.type-aliases-package =com.yifan.pojo

3,添加 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是封裝的返回結果類

import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;@Data @AllArgsConstructor @NoArgsConstructor public class Result<T> {private T object;private String data; }

6,前端頁面 一個簡單的登錄頁面

<!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"){// 跳轉 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) {// 本地存儲這個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 —

快來關注“弋凡”微信公眾號吧

總結

以上是生活随笔為你收集整理的Token令牌 Redis 案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 99在线免费观看 | 亚洲自拍电影 | 日本一区二区人妻 | av手机天堂 | 毛片在线看网站 | 日韩精品一区二区三区在线视频 | 欧美日韩成人一区二区在线观看 | 色图网址 | 性欧美69| 4438x全国最大成人网 | 亚洲美女影院 | 日日操夜夜爱 | 麻豆国产尤物av尤物在线观看 | 一级aaaa毛片 | 邻居少妇张开双腿让我爽一夜 | 91视频入口 | 最新中文字幕免费视频 | 少妇精品久久久一区二区三区 | 日韩aⅴ在线观看 | 亚洲无吗一区二区三区 | 国产精品男人的天堂 | 天天综合网入口 | 久久精品激情 | 性天堂网 | 中文字幕在线视频免费观看 | 午夜三级影院 | 亚洲逼图 | 久久久久人妻一区精品色欧美 | 五月婷婷视频在线观看 | www黄在线观看 | 2024av| 九热这里只有精品 | 国产黄色网页 | 91成人免费在线视频 | 色很久 | 在线看片不卡 | 操网| 亚洲精品亚洲人成人网 | 牛牛影视一区二区 | 午夜欧美在线 | 国产成人一区二区三区免费看 | 尤物视频在线观看国产 | 一区二区在线视频观看 | 日韩一级黄色片 | 久久影院午夜理论片无码 | h片在线观看视频 | 欧美岛国国产 | 91一区二区三区在线观看 | 国产女主播一区 | 自拍偷拍视频网站 | 花房姑娘免费观看全集 | 又黄又骚又爽 | 午夜爽爽影院 | 在线观看免费黄色 | 香蕉在线影院 | 国产精品第一 | 亚洲一区二区三区四区五区午夜 | 91羞羞网站 | 国产精品欧美日韩 | 两性囗交做爰视频 | 色窝窝无码一区二区三区成人网站 | 日韩精品美女 | 91最新地址永久入口 | 天天影视插插插 | 美日韩在线观看 | 欧美深夜在线 | 暗呦丨小u女国产精品 | 女人扒开腿让男人捅爽 | 刘亦菲久久免费一区二区 | 精品一区二区久久久久蜜桃 | 午夜特片网 | 色校园| 日本最黄网站 | 日产欧产va高清 | 国产一区二三区 | 日日夜夜噜 | 人人插人人爽 | 一级片一区二区三区 | 午夜精品久久久久久久久久久久 | 999资源站 | 成人深夜在线观看 | 国产伦精品一区二区三区视频1 | 网站在线观看你懂的 | 男女羞羞在线观看 | 日韩成人免费 | 国产精品欧美亚洲 | 麻豆av免费看 | 久久国产亚洲精品无码 | 日本打屁股网站 | 亚洲精品乱码久久久久久久 | 在线视频免费观看 | 窝窝午夜看片 | 4388成人网 | 日本体内she精高潮 男女视频在线免费观看 | 在线成人一区 | 黄色午夜影院 | 欧美一级日韩一级 | 观看av在线 | 99精品视频在线观看 |