| | |
| | | import com.gkhy.assess.common.enums.ApproveStatusEnum; |
| | | import com.gkhy.assess.common.enums.UserIdentityEnum; |
| | | import com.gkhy.assess.common.enums.UserStatusEnum; |
| | | import com.gkhy.assess.common.exception.ApiException; |
| | | import com.gkhy.assess.common.utils.JwtTokenUtil; |
| | | import com.gkhy.assess.common.utils.RedisUtils; |
| | | import com.gkhy.assess.system.domain.SysUser; |
| | |
| | | @Autowired |
| | | private HttpServletRequest request; |
| | | |
| | | public SysUser login(String username, String password) { |
| | | SysUser sysUser=sysUserService.getUserByUsernamePhone(username); |
| | | public SysUser login(String username, String password,Integer identity) { |
| | | SysUser sysUser=sysUserService.getUserByUsernamePhone(username,identity); |
| | | validUser(sysUser); |
| | | passwordService.validate(sysUser,password); |
| | | recordLoginInfo(sysUser.getId()); |
| | |
| | | public SysUser validJwtToken(String jwtToken){ |
| | | |
| | | String username= JwtTokenUtil.getUsername(jwtToken); |
| | | if(StringUtils.isEmpty(username)){ |
| | | Integer identity=JwtTokenUtil.getIdentity(jwtToken); |
| | | if(StringUtils.isEmpty(username)||identity==null){ |
| | | throw new AuthenticationException("token非法无效!"); |
| | | } |
| | | SysUser sysUser=sysUserService.getUserByUsernamePhone(username); |
| | | SysUser sysUser=sysUserService.getUserByUsernamePhone(username,identity); |
| | | validUser(sysUser); |
| | | if(!JwtTokenUtil.verify(jwtToken,username,sysUser.getPassword())){ |
| | | if(!JwtTokenUtil.verify(jwtToken,username,sysUser.getPassword(),identity)){ |
| | | throw new AuthenticationException("token非法无效!"); |
| | | } |
| | | if(!jwtTokenRefresh(jwtToken,username,sysUser.getPassword())){ |
| | | if(!jwtTokenRefresh(jwtToken,username,sysUser.getPassword(),identity)){ |
| | | throw new AuthenticationException("Token已失效,请重新登录!"); |
| | | } |
| | | // setRolePermission(sysUser); |
| | |
| | | * @param passWord |
| | | * @return |
| | | */ |
| | | public boolean jwtTokenRefresh(String jwtToken,String username,String passWord){ |
| | | public boolean jwtTokenRefresh(String jwtToken, String username, String passWord, Integer identity){ |
| | | String tokenKey=redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+JwtTokenUtil.md5Encode(jwtToken)); |
| | | String userKey=redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+username); |
| | | String userKey=redisUtils.generateKey(CacheConstant.SYS_USER_TOKEN+":"+username+"_"+identity); |
| | | String cacheToken= (String) redisUtils.get(tokenKey); |
| | | if(StringUtils.isNotEmpty(cacheToken)){ |
| | | // 校验token有效性 |
| | | if(!JwtTokenUtil.isNeedUpdate(cacheToken,username,passWord)){ |
| | | String newToken=JwtTokenUtil.sign(username,passWord); |
| | | if(!JwtTokenUtil.isNeedUpdate(cacheToken,username,passWord,identity)){ |
| | | String newToken=JwtTokenUtil.sign(username,passWord,identity); |
| | | // 设置超时时间 |
| | | redisUtils.set(tokenKey,newToken); |
| | | redisUtils.expire(tokenKey,JwtTokenUtil.EXPIRATION*2/1000); |