簡單的token使用者登入實現,介面許可權校驗
阿新 • • 發佈:2022-04-19
賬號密碼校驗完成後,給Redis裡塞一個key,生成UUID是token作為key,拿user物件作為value,以後執行任何操作就單傳token在介面做校驗就行,儲存時間可以自己設定
String token = UUID.randomUUID() + ""; //以token為key,user為value,存30分鐘 System.out.println(token); redisTemplate.opsForValue().set(token, user, 30, TimeUnit.MINUTES);
簡單的token登入
@ApiOperation(value = "token登入") @GetMapping(value = "/tokenLogin") public Map login(HttpServletRequest request) { String loginToken = request.getHeader("token"); Object user = redisTemplate.opsForValue().get(loginToken); if (user != null) { returnReUtil.result("獲取登入使用者成功", user); }else { return ReUtil.result("獲取登入使用者失敗", user); } }
如果其他的操作介面需要校驗,就在介面的引數中加上HttpServletRequest 來獲取token做校驗,第一次返回後前端儲存token,每次請求介面就帶上,放在請求頭中
String token = request.getHeader("token"); if(Strings.isNullOrEmpty(token)){return "token不能為空!"; }else { Object user = redisTemplate.opsForValue().get(token); if(null==user) { return "無許可權執行此操作"; }else { //todo }
因為要用到redis,下面是redis的pom依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency>
另外yml配置檔案也需要配置
redis: # redis資料庫索引(預設為0),我們使用索引為6的資料庫,避免和其他資料庫衝突 database: 6 # redis伺服器地址(預設為loaclhost) host: 192.168.110.199 # redis埠(預設為6379) port: 6379 # redis訪問密碼 password: 123456 # redis連線超時時間(單位毫秒) timeout: 60s # redis連線池配置 pool: min-idle: -1 max-idle: -1