用户登录功能之token的使用

举报
小奇JAVA 发表于 2022/06/18 00:26:53 2022/06/18
【摘要】 真正的大师永远怀着一颗学徒的心 哈喽!大家好,我是小奇,一位程序员界的学徒 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新,可以微信...

真正的大师永远怀着一颗学徒的心
哈喽!大家好,我是小奇,一位程序员界的学徒
小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧
文章持续更新,可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟!回复【项目】有我为大家准备的一些项目源码。回复【简历模板】有我为大家准备的简历模板。

在这里插入图片描述


一、登录

1、登录时生成token

我们登录成功后生成一个token也就是随机数,然后将随机数作为key,将登录查询到的用户信息作为value放入redis中,然后设置过期时间,最后将token返回给前端,前端将token存储,用来下一次请求后端的时候使用。

关键代码

//密码正确
		//生成token
		String token = UUID.randomUUID().toString();
		//将用户密码清除再放入redis中
		user.setPassword(null);
		//向redis中存入token和用户信息
		jedisClient.set(REDIS_USER_TOKEN + ":" + token, JsonUtils.objectToJson(user));
		//设置过期时间
		jedisClient.expir(REDIS_USER_TOKEN + ":" + token, SSO_SESSION_EXPIRE);
		//返回token

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
	public TaotaoResult userLogin(String username, String password) {
		
		TbUserExample example = new TbUserExample();
		Criteria criteria = example.createCriteria();
		criteria.andUsernameEqualTo(username);
		List<TbUser> list = userMapper.selectByExample(example);
		//没有此用户名
		if(list == null || list.size() == 0){
			return TaotaoResult.build(400, "用户名或密码错误");
		}
		TbUser user = list.get(0);
		//密码错误
		if(!DigestUtils.md5DigestAsHex(password.getBytes()).equals(user.getPassword())){
			return TaotaoResult.build(400, "用户名或密码错误");
		}
		//密码正确
		//生成token
		String token = UUID.randomUUID().toString();
		//将用户密码清除再放入redis中
		user.setPassword(null);
		//向redis中存入token和用户信息
		jedisClient.set(REDIS_USER_TOKEN + ":" + token, JsonUtils.objectToJson(user));
		//设置过期时间
		jedisClient.expir(REDIS_USER_TOKEN + ":" + token, SSO_SESSION_EXPIRE);
		//返回token
		return TaotaoResult.ok(token);
	}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

二、根据token查询用户信息

1、查询用户信息

根据token查询用户信息,如果查询不到证明token已经过期需要重新登录,如果token查询得到就返回用户信息,并且将token的有效时间重新更新为30分钟

@Override
	public TaotaoResult getUserByToken(String token) {
		//根据token从redis中查询用户信息
		String json = jedisClient.get(REDIS_USER_TOKEN + ":" + token);
		if(StringUtils.isBlank(json)){
			return TaotaoResult.build(400, "此session已经过期,请重新登录");
		}
		//更新过期时间
		jedisClient.expir(REDIS_USER_TOKEN + ":" + token, SSO_SESSION_EXPIRE);
		//返回用户信息
		return TaotaoResult.ok(JsonUtils.jsonToPojo(json, TbUser.class));
	}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

三、总结

这里的相关内容还没有整理完毕,文章后面持续更新,建议收藏。

文章中涉及到的命令大家一定要像我一样每个都敲几遍,只有在敲的过程中才能发现自己对命令是否真正的掌握了。

如果觉得我的文章还不错的话就点个赞吧,另外可以微信搜索【小奇JAVA面试】第一时间阅读,回复【资料】更有我为大家准备的福利哟!回复【项目】有我为大家准备的一些项目源码。回复【简历模板】有我为大家准备的简历模板。

文章来源: xiaoqijava.blog.csdn.net,作者:学无止境小奇,版权归原作者所有,如需转载,请联系作者。

原文链接:xiaoqijava.blog.csdn.net/article/details/125323046

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。