登陆代码迁移jianquan接口鉴权dengchu
This commit is contained in:
@ -61,5 +61,13 @@ public class LoginController {
|
||||
return BaseResponse.success(null);
|
||||
}
|
||||
}
|
||||
@ApiOperation("登出")
|
||||
@PostMapping("/logout")
|
||||
public BaseResponse<Boolean> logout(HttpServletRequest request) {
|
||||
|
||||
Boolean result = iBaseUserService.logout(request);
|
||||
return BaseResponse.success(result);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -10,6 +10,7 @@ import com.chinaunicom.mall.ebtp.login.entity.BaseUserSelect;
|
||||
import com.chinaunicom.mall.ebtp.login.entity.BaseUserSelectVo;
|
||||
import com.coscoshipping.ebtp.project.user.entity.SysUser;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
|
||||
@ -26,4 +27,6 @@ public interface BaseUserService extends IBaseService<SysUser> {
|
||||
void setCookie(HttpServletResponse response, String name, String value);
|
||||
|
||||
SecurityEntity bdCheckToken(String token);
|
||||
|
||||
Boolean logout(HttpServletRequest request);
|
||||
}
|
||||
|
@ -11,12 +11,14 @@ import com.chinaunicom.mall.ebtp.common.base.entity.BaseCacheUser;
|
||||
import com.chinaunicom.mall.ebtp.common.base.service.IBaseCacheUserService;
|
||||
import com.chinaunicom.mall.ebtp.common.base.service.impl.BaseServiceImpl;
|
||||
import com.chinaunicom.mall.ebtp.common.exception.common.CommonExceptionEnum;
|
||||
import com.chinaunicom.mall.ebtp.login.common.Constants;
|
||||
import com.chinaunicom.mall.ebtp.login.common.Constants;;
|
||||
import com.chinaunicom.mall.ebtp.login.common.RSA;
|
||||
import com.chinaunicom.mall.ebtp.login.dao.BaseUserMapper;
|
||||
import com.chinaunicom.mall.ebtp.login.entity.*;
|
||||
import com.chinaunicom.mall.ebtp.login.service.BaseUserService;
|
||||
import com.chinaunicom.mall.ebtp.login.service.BaseUserTokenService;
|
||||
import com.coscoshipping.ebtp.project.org.entity.SysOrg;
|
||||
import com.coscoshipping.ebtp.project.org.service.SysOrgService;
|
||||
import com.coscoshipping.ebtp.project.user.entity.SysUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
@ -25,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Qualifier;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
@ -72,6 +75,8 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
||||
@Autowired
|
||||
private UserInfoService userInfoService;
|
||||
|
||||
@Autowired
|
||||
private SysOrgService sysOrgService;
|
||||
@Autowired(required = false)
|
||||
@Qualifier("cacheRedisTemplate")
|
||||
private RedisTemplate<String, Object> redisTemplate;
|
||||
@ -243,8 +248,11 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
||||
securityEntity.setStaffName(baseUser.getName());
|
||||
securityEntity.setOu(baseUser.getOrgId());//部门id
|
||||
securityEntity.setOuName(baseUser.getOrgName());
|
||||
securityEntity.setOrgId("1");//公司Id
|
||||
securityEntity.setOrgName("中远");
|
||||
SysOrg company = sysOrgService.getCompanyByOrgId(baseUser.getOrgId());
|
||||
if (company != null) {
|
||||
securityEntity.setOrgId(company.getOrgId());//公司id
|
||||
securityEntity.setOrgName(company.getOrgName());
|
||||
}
|
||||
securityEntity.setUserSource("0");//账号类型中远
|
||||
List<AuthorityEntity> authorityList =this.baseUserMapper.selectRoleByUserId(baseUser.getUserId());;
|
||||
securityEntity.setAuthorityList(authorityList);
|
||||
@ -272,6 +280,43 @@ public class BaseUserServiceImpl extends BaseServiceImpl<BaseUserMapper, SysUser
|
||||
return securityEntity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean logout(HttpServletRequest request) {
|
||||
try {
|
||||
|
||||
String token = request.getHeader(com.chinaunicom.mall.ebtp.cloud.security.starter.common.Constants.AUTHORIZATION_HEADER);
|
||||
if (StringUtils.isNotBlank(token)) {
|
||||
token = token.replaceAll("Bearer ", "");
|
||||
|
||||
|
||||
|
||||
// 更新数据库中的token状态为失效
|
||||
List<BaseUserToken> tokenList = baseUserTokenService.list(
|
||||
new LambdaQueryWrapper<BaseUserToken>()
|
||||
.eq(BaseUserToken::getToken, token)
|
||||
.eq(BaseUserToken::getState, Constants.USER_TOKEN_STATUS_E));
|
||||
if (tokenList != null && !tokenList.isEmpty()) {
|
||||
BaseUserToken userToken = tokenList.get(0);
|
||||
userToken.setState(0); // 设置为失效状态
|
||||
boolean updateResult = baseUserTokenService.updateById(userToken);
|
||||
if (updateResult&&userinfoRedisTemplate.hasKey(REDIS_USER_KEY + token)) {
|
||||
// 从Redis中移除token
|
||||
userinfoRedisTemplate.delete(REDIS_USER_KEY + token);
|
||||
//spring 安全删除用户信息
|
||||
SecurityContextHolder.clearContext();
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
} catch (Exception e) {
|
||||
log.error("登出异常:{}", e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String args[]) throws Exception {
|
||||
// String rsa = "ObMojRm4G31O91lJDyV7rT7fmkJ0x/tMz+t2gZa1M5RtZm6cTiaAT6eblAQzjuMbNNU6DoD/YloITzn2jnQH4g2nMj1Y8TXdSEK/q8QSoLb8QVb26SuMt1xuv1hklU0yzkqCtGW7GnRArMMlgQjh04GwAcj6TikEFjKvEGGETm4=";
|
||||
// String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCThndxa2d5wd1XgZw/OoRHyqqhEKn2Vj8esINcPHRDKz/eDxrHT874ssYfRdkQPU4d13yLhywu30D0J/IusB1Aay0Kl7fszYztP1Yg7Y8Gmiwynj4bFooIFZk5l0wJdxciXA4FgjK+oD4Un/LhP20k5OSQ+QLMDBHBJTD/uk9cxQIDAQAB";
|
||||
|
@ -39,4 +39,6 @@ public interface SysOrgService extends IBaseService<SysOrg>{
|
||||
* @return
|
||||
*/
|
||||
Boolean deleteById(String orgId);
|
||||
|
||||
SysOrg getCompanyByOrgId(String orgId);
|
||||
}
|
||||
|
@ -29,8 +29,8 @@ import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 对数据表 sys_org 操作的 serviceImpl
|
||||
* @author yss
|
||||
*
|
||||
* @author yss
|
||||
*/
|
||||
@Service
|
||||
public class SysOrgServiceImpl extends BaseServiceImpl<SysOrgMapper, SysOrg> implements SysOrgService {
|
||||
@ -116,6 +116,21 @@ public class SysOrgServiceImpl extends BaseServiceImpl<SysOrgMapper,SysOrg> imp
|
||||
return this.removeById(orgId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public SysOrg getCompanyByOrgId(String orgId) {
|
||||
LambdaQueryWrapper<SysOrg> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(SysOrg::getOrgId, orgId).eq(SysOrg::getDeleteFlag, "normal");
|
||||
SysOrg currentOrg = baseMapper.selectOne(queryWrapper);
|
||||
while ((currentOrg != null) && !currentOrg.getOrgCategory().equals("Org") && !CommonUtil.ROOT_NODE.equals(currentOrg.getOrgId())) {
|
||||
queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(SysOrg::getOrgId, currentOrg.getUpOrgId())
|
||||
.eq(SysOrg::getDeleteFlag, "normal");
|
||||
currentOrg = baseMapper.selectOne(queryWrapper);
|
||||
}
|
||||
|
||||
return currentOrg;
|
||||
}
|
||||
|
||||
|
||||
// @Override
|
||||
public SysOrg buildOrgFullPath(SysOrg nowOrg) {
|
||||
@ -165,6 +180,7 @@ public class SysOrgServiceImpl extends BaseServiceImpl<SysOrgMapper,SysOrg> imp
|
||||
.setKey(orgVO.getOrgId())
|
||||
.setValue(orgVO.getOrgId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 递归查询部门信息树形展示
|
||||
*
|
||||
|
Reference in New Issue
Block a user