登录成功和退出成功接口,增加返回值

This commit is contained in:
thinkgem
2025-10-12 14:07:28 +08:00
parent d1f429e93b
commit 10820bf441
3 changed files with 28 additions and 80 deletions

View File

@@ -8,22 +8,16 @@ import com.jeesite.common.codec.EncodeUtils;
import com.jeesite.common.codec.SM3Utils; import com.jeesite.common.codec.SM3Utils;
import com.jeesite.common.codec.ShaUtils; import com.jeesite.common.codec.ShaUtils;
import com.jeesite.common.config.Global; import com.jeesite.common.config.Global;
import com.jeesite.common.network.IpUtils;
import com.jeesite.common.shiro.authc.FormToken; import com.jeesite.common.shiro.authc.FormToken;
import com.jeesite.common.utils.SpringUtils;
import com.jeesite.modules.sys.entity.Log; import com.jeesite.modules.sys.entity.Log;
import com.jeesite.modules.sys.entity.User; import com.jeesite.modules.sys.entity.User;
import com.jeesite.modules.sys.service.UserService;
import com.jeesite.modules.sys.utils.LogUtils; import com.jeesite.modules.sys.utils.LogUtils;
import com.jeesite.modules.sys.utils.UserUtils;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken; import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authz.AuthorizationInfo; import org.apache.shiro.authz.AuthorizationInfo;
import java.util.Date;
/** /**
* 系统认证授权实现类 * 系统认证授权实现类
* @author ThinkGem * @author ThinkGem
@@ -34,8 +28,6 @@ public class AuthorizingRealm extends BaseAuthorizingRealm {
public static final int HASH_ITERATIONS = 1024; public static final int HASH_ITERATIONS = 1024;
public static final int SALT_SIZE = 8; public static final int SALT_SIZE = 8;
private UserService userService;
public AuthorizingRealm() { public AuthorizingRealm() {
super(); super();
} }
@@ -115,38 +107,21 @@ public class AuthorizingRealm extends BaseAuthorizingRealm {
} }
@Override @Override
public void onLoginSuccess(LoginInfo loginInfo, HttpServletRequest request) { public User onLoginSuccess(LoginInfo loginInfo, HttpServletRequest request) {
super.onLoginSuccess(loginInfo, request); User user = super.onLoginSuccess(loginInfo, request);
// 更新登录IP、时间、会话ID等
User user = UserUtils.get(loginInfo.getId());
user.setOldLastLoginIp(user.getLastLoginIp());
user.setOldLastLoginDate(user.getLastLoginDate());
user.setLastLoginIp(IpUtils.getRemoteAddr(request));
user.setLastLoginDate(new Date());
getUserService().updateUserLoginInfo(user);
// 记录用户登录日志 // 记录用户登录日志
LogUtils.saveLog(user, request, "系统登录", Log.TYPE_LOGIN_LOGOUT); LogUtils.saveLog(user, request, "系统登录", Log.TYPE_LOGIN_LOGOUT);
return user;
// 登录成功后,验证码计算器清零
BaseAuthorizingRealm.isValidCodeLogin(user.getLoginCode(), user.getCorpCode_(), loginInfo.getParam("deviceType"), "success");
} }
@Override @Override
public void onLogoutSuccess(LoginInfo loginInfo, HttpServletRequest request) { public User onLogoutSuccess(LoginInfo loginInfo, HttpServletRequest request) {
super.onLogoutSuccess(loginInfo, request); User user = super.onLogoutSuccess(loginInfo, request);
// 记录用户退出日志
User user = UserUtils.get(loginInfo.getId());
LogUtils.saveLog(user, request, "系统退出", Log.TYPE_LOGIN_LOGOUT);
}
public UserService getUserService() { // 记录用户退出日志
if (userService == null){ LogUtils.saveLog(user, request, "系统退出", Log.TYPE_LOGIN_LOGOUT);
userService = SpringUtils.getBean(UserService.class); return user;
}
return userService;
} }
} }

View File

@@ -17,7 +17,6 @@ import com.jeesite.modules.sys.entity.EmpUser;
import com.jeesite.modules.sys.entity.Log; import com.jeesite.modules.sys.entity.Log;
import com.jeesite.modules.sys.entity.User; import com.jeesite.modules.sys.entity.User;
import com.jeesite.modules.sys.service.EmpUserService; import com.jeesite.modules.sys.service.EmpUserService;
import com.jeesite.modules.sys.service.UserService;
import com.jeesite.modules.sys.utils.LogUtils; import com.jeesite.modules.sys.utils.LogUtils;
import com.jeesite.modules.sys.utils.UserUtils; import com.jeesite.modules.sys.utils.UserUtils;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
@@ -40,14 +39,13 @@ import java.util.Map;
*/ */
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public class CasAuthorizingRealm extends BaseAuthorizingRealm { public class CasAuthorizingRealm extends BaseAuthorizingRealm {
private UserService userService;
private EmpUserService empUserService;
private CasOutHandler casOutHandler; private CasOutHandler casOutHandler;
private String casServerUrl; // CAS 服务器地址 private String casServerUrl; // CAS 服务器地址
private String casServerCallbackUrl; // CAS 服务器回调地址 private String casServerCallbackUrl; // CAS 服务器回调地址
private TicketValidator ticketValidator;// CAS 令牌验证类 private TicketValidator ticketValidator;// CAS 令牌验证类
private EmpUserService empUserService;
public CasAuthorizingRealm() { public CasAuthorizingRealm() {
super(); super();
@@ -175,28 +173,27 @@ public class CasAuthorizingRealm extends BaseAuthorizingRealm {
} }
@Override @Override
public void onLoginSuccess(LoginInfo loginInfo, HttpServletRequest request) { public User onLoginSuccess(LoginInfo loginInfo, HttpServletRequest request) {
User user = super.onLoginSuccess(loginInfo, request);
// 单点登录登出句柄登录时注入session在这之前必须获取下授权信息 // 单点登录登出句柄登录时注入session在这之前必须获取下授权信息
String ticket = loginInfo.getParam("ticket"); String ticket = loginInfo.getParam("ticket");
casOutHandler.recordSession(request, ticket); casOutHandler.recordSession(request, ticket);
//System.out.print("__sid: "+request.getSession().getId()); //System.out.print("__sid: "+request.getSession().getId());
//System.out.println(" == "+UserUtils.getSession().getId()); //System.out.println(" == "+UserUtils.getSession().getId());
// 记录用户登录日志
LogUtils.saveLog(user, request, "系统登录", Log.TYPE_LOGIN_LOGOUT);
return user;
} }
@Override @Override
public void onLogoutSuccess(LoginInfo loginInfo, HttpServletRequest request) { public User onLogoutSuccess(LoginInfo loginInfo, HttpServletRequest request) {
super.onLogoutSuccess(loginInfo, request); User user = super.onLogoutSuccess(loginInfo, request);
// 记录用户退出日志 // 记录用户退出日志
User user = UserUtils.get(loginInfo.getId());
LogUtils.saveLog(user, request, "系统退出", Log.TYPE_LOGIN_LOGOUT); LogUtils.saveLog(user, request, "系统退出", Log.TYPE_LOGIN_LOGOUT);
} return user;
public UserService getUserService() {
if (userService == null){
userService = SpringUtils.getBean(UserService.class);
}
return userService;
} }
public EmpUserService getEmpUserService() { public EmpUserService getEmpUserService() {

View File

@@ -6,14 +6,10 @@ package com.jeesite.common.shiro.realm;
import com.jeesite.common.shiro.authc.FormToken; import com.jeesite.common.shiro.authc.FormToken;
import com.jeesite.common.shiro.authc.LdapToken; import com.jeesite.common.shiro.authc.LdapToken;
import com.jeesite.common.utils.SpringUtils;
import com.jeesite.common.web.http.ServletUtils; import com.jeesite.common.web.http.ServletUtils;
import com.jeesite.modules.sys.entity.Log; import com.jeesite.modules.sys.entity.Log;
import com.jeesite.modules.sys.entity.User; import com.jeesite.modules.sys.entity.User;
import com.jeesite.modules.sys.service.EmpUserService;
import com.jeesite.modules.sys.service.UserService;
import com.jeesite.modules.sys.utils.LogUtils; import com.jeesite.modules.sys.utils.LogUtils;
import com.jeesite.modules.sys.utils.UserUtils;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo; import org.apache.shiro.authc.AuthenticationInfo;
@@ -54,9 +50,6 @@ public class LdapAuthorizingRealm extends BaseAuthorizingRealm {
*/ */
private LdapContextFactory contextFactory; private LdapContextFactory contextFactory;
private UserService userService;
private EmpUserService empUserService;
/** /**
* Default no-argument constructor that defaults the internal {@link LdapContextFactory} instance to a * Default no-argument constructor that defaults the internal {@link LdapContextFactory} instance to a
* {@link JndiLdapContextFactory}. * {@link JndiLdapContextFactory}.
@@ -126,41 +119,24 @@ public class LdapAuthorizingRealm extends BaseAuthorizingRealm {
} }
@Override @Override
public void onLoginSuccess(LoginInfo loginInfo, HttpServletRequest request) { public User onLoginSuccess(LoginInfo loginInfo, HttpServletRequest request) {
super.onLoginSuccess(loginInfo, request); User user = super.onLoginSuccess(loginInfo, request);
//System.out.print("__sid: "+request.getSession().getId()); //System.out.print("__sid: "+request.getSession().getId());
//System.out.println(" == "+UserUtils.getSession().getId()); //System.out.println(" == "+UserUtils.getSession().getId());
// 更新登录IP、时间、会话ID等
User user = UserUtils.get(loginInfo.getId());
getUserService().updateUserLoginInfo(user);
// 记录用户登录日志 // 记录用户登录日志
LogUtils.saveLog(user, ServletUtils.getRequest(), "系统登录", Log.TYPE_LOGIN_LOGOUT); LogUtils.saveLog(user, ServletUtils.getRequest(), "系统登录", Log.TYPE_LOGIN_LOGOUT);
return user;
} }
@Override @Override
public void onLogoutSuccess(LoginInfo loginInfo, HttpServletRequest request) { public User onLogoutSuccess(LoginInfo loginInfo, HttpServletRequest request) {
super.onLogoutSuccess(loginInfo, request); User user = super.onLogoutSuccess(loginInfo, request);
// 记录用户退出日志 // 记录用户退出日志
User user = UserUtils.get(loginInfo.getId());
LogUtils.saveLog(user, request, "系统退出", Log.TYPE_LOGIN_LOGOUT); LogUtils.saveLog(user, request, "系统退出", Log.TYPE_LOGIN_LOGOUT);
} return user;
public UserService getUserService() {
if (userService == null){
userService = SpringUtils.getBean(UserService.class);
}
return userService;
}
public EmpUserService getEmpUserService() {
if (empUserService == null){
empUserService = SpringUtils.getBean(EmpUserService.class);
}
return empUserService;
} }
/** /**