简单的token用户登录实现,接口权限校验

Posted 格格巫 MMQ!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的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依赖

复制代码
  
org.springframework.boot
spring-boot-starter-data-redis


org.apache.commons
commons-pool2

复制代码
另外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
复制代码
不想用redis管理也可以放在内存中,基本思路就是每次登录成功新建一个map,key是token,value是临时类,里面有user的实体和当前保存时的毫秒值,然后将map放入list中,每次请求对比有无这个token(key),然后拿出user即可,再建立一个定时任务,定时对比当前系统时间和临时类中的毫秒值,如果超出规定的时间就删除当前map,切记删除后break,否则会报空指针异常。

以上是关于简单的token用户登录实现,接口权限校验的主要内容,如果未能解决你的问题,请参考以下文章

签发token校验token多方式登录签发token的实现自定义认证反爬规则的认证类admin使用自定义User表:新增用户密码密文群查接口各种筛选组件数据准备drf搜索过滤组件drf排

若依框架登录,token,自定义session,鉴权等前后端流程解读

简单的登录权限验证实现

token和JWT token区别登录安全页面权限数据权限单点登录

登陆权限--token的使用

登陆权限--token的使用