用户登录功能之token的使用

真正的大师永远怀着一颗学徒的心
哈喽!大家好,我是小奇,一位程序员界的学徒
小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧
文章持续更新,可以微信搜索【小奇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
	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);
	}

二、根据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));
	}

三、总结

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

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

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

猜你喜欢

转载自blog.csdn.net/weixin_44096133/article/details/125323046