1. 程式人生 > 其它 >簡單的token使用者登入實現,介面許可權校驗

簡單的token使用者登入實現,介面許可權校驗

賬號密碼校驗完成後,給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) {
            return
ReUtil.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