public interface LoginService {
//参数:用户名和密码
//业务逻辑:
/*
* 1、判断用户和密码是否正确
* 2、如果不正确,返回登录失败
* 3、如果正确生成token。
* 4、把用户信息写入redis,key:token, value:用户信息
* 5、设置Session的过期时间
* 6、把token返回
*/
//返回值:E3Result,其中包含token信息
E3Result userLogin(String username, String password);
}
/**
* 用户登录处理
* <p>Title: LoginServiceImpl</p>
* <p>Description: </p>
* @version 1.0
*/
@Service
public class LoginServiceImpl implements LoginService {
@Autowired
private TbUserMapper userMapper;
@Autowired//注入redis
private JedisClient jedisClient;
@Override
public E3Result userLogin(String username, String password) {
// 1、判断用户和密码是否正确
//根据用户名查询用户信息
TbUserExample example = new TbUserExample();
Criteria criteria = example.createCriteria();
criteria.andUsernameEqualTo(username);
//执行查询
List<TbUser> list = userMapper.selectByExample(example);
if (list == null || list.size() == 0) {
//返回登录失败
return E3Result.build(400, "用户名或密码错误");
}
//取用户信息
TbUser user = list.get(0);
//判断密码是否正确
if (!DigestUtils.md5DigestAsHex(password.getBytes()).equals(user.getPassword())) {
// 2、如果不正确,返回登录失败
return E3Result.build(400, "用户名或密码错误");
}
// 3、如果正确生成token。
String token = UUID.randomUUID().toString();
// 4、把用户信息写入redis,key:token value:用户信息
user.setPassword(null);//密码不带回客户端
jedisClient.set("SESSION:" + token, JsonUtils.objectToJson(user));
// 5、设置Session的过期时间
jedisClient.expire("SESSION:" + token, 1800);
// 6、把token返回
return E3Result.ok(token);
}