mirror of https://gitee.com/stylefeng/roses
【7.1.1】新增getEffectiveLoginUser
parent
de762eda6a
commit
2c109e4ad6
|
@ -34,7 +34,6 @@ import cn.stylefeng.roses.kernel.auth.api.expander.AuthConfigExpander;
|
|||
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
|
||||
import cn.stylefeng.roses.kernel.rule.util.HttpServletUtil;
|
||||
import cn.stylefeng.roses.kernel.system.api.UserServiceApi;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.user.UserLoginInfoDTO;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
@ -115,8 +114,7 @@ public class LoginUserImpl implements LoginUserApi {
|
|||
}
|
||||
|
||||
// 从新组装一次loginUser,保证loginUser中数据的时效性
|
||||
UserLoginInfoDTO userLoginInfo = userServiceApi.getUserLoginInfo(session.getAccount());
|
||||
return userLoginInfo.getLoginUser();
|
||||
return userServiceApi.getEffectiveLoginUser(session);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
*/
|
||||
package cn.stylefeng.roses.kernel.system.api;
|
||||
|
||||
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.user.OnlineUserDTO;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.user.SysUserDTO;
|
||||
import cn.stylefeng.roses.kernel.system.api.pojo.user.UserLoginInfoDTO;
|
||||
|
@ -43,7 +44,7 @@ import java.util.Set;
|
|||
public interface UserServiceApi {
|
||||
|
||||
/**
|
||||
* 获取用户登录需要的详细信息
|
||||
* 获取用户登录需要的详细信息(用在第一次获取登录用户)
|
||||
*
|
||||
* @param account 账号
|
||||
* @return 用户登录需要的详细信息
|
||||
|
@ -52,6 +53,18 @@ public interface UserServiceApi {
|
|||
*/
|
||||
UserLoginInfoDTO getUserLoginInfo(String account);
|
||||
|
||||
/**
|
||||
* 获取刷新后的登录用户(用在用户登录之后调用)
|
||||
* <p>
|
||||
* 以往用户登录后直接从session缓存中获取用户信息,不能及时更新,需要退出才可以获取最新信息
|
||||
* <p>
|
||||
* 本方法解决了实时获取当前登录用户不准确的问题
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2021/7/29 22:03
|
||||
*/
|
||||
LoginUser getEffectiveLoginUser(LoginUser loginUser);
|
||||
|
||||
/**
|
||||
* 更新用户的登录信息,一般为更新用户的登录时间和ip
|
||||
*
|
||||
|
|
|
@ -571,6 +571,20 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
return UserLoginInfoFactory.userLoginInfoDTO(sysUser, roleResponseList, dataScopeResponse, userOrgInfo, resourceUrlsListByCodes, roleButtonCodes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoginUser getEffectiveLoginUser(LoginUser loginUser) {
|
||||
|
||||
UserLoginInfoDTO userLoginInfoDTO = this.getUserLoginInfo(loginUser.getAccount());
|
||||
LoginUser newLoginUser = userLoginInfoDTO.getLoginUser();
|
||||
|
||||
// 设置登录用户原有的一些信息
|
||||
newLoginUser.setToken(loginUser.getToken());
|
||||
newLoginUser.setTenantCode(loginUser.getTenantCode());
|
||||
newLoginUser.setWsUrl(loginUser.getWsUrl());
|
||||
|
||||
return newLoginUser;
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public void updateUserLoginInfo(Long userId, Date date, String ip) {
|
||||
|
|
Loading…
Reference in New Issue