mirror of
https://gitee.com/dromara/MaxKey.git
synced 2026-05-14 20:50:14 +08:00
ONLINE_TICKET
This commit is contained in:
@@ -251,6 +251,8 @@ public abstract class AbstractAuthenticationProvider {
|
||||
} else {
|
||||
_logger.debug("User Login. ");
|
||||
}
|
||||
//Online Tickit
|
||||
userInfo.setOnlineTickit(WebConstants.ONLINE_TICKET_PREFIX + "-" +userInfo.generateId());
|
||||
}
|
||||
|
||||
return userInfo;
|
||||
|
||||
@@ -34,6 +34,7 @@ public class BasicAuthentication implements Authentication {
|
||||
String remeberMe;
|
||||
String authType;
|
||||
String jwtToken;
|
||||
String onlineTickit;
|
||||
ArrayList<GrantedAuthority> grantedAuthority;
|
||||
boolean authenticated;
|
||||
|
||||
@@ -166,6 +167,14 @@ public class BasicAuthentication implements Authentication {
|
||||
this.grantedAuthority = grantedAuthority;
|
||||
}
|
||||
|
||||
public String getOnlineTickit() {
|
||||
return onlineTickit;
|
||||
}
|
||||
|
||||
public void setOnlineTickit(String onlineTickit) {
|
||||
this.onlineTickit = onlineTickit;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
|
||||
@@ -93,7 +93,7 @@ public class RealmAuthenticationProvider extends AbstractAuthenticationProvider
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
auth.setOnlineTickit(userInfo.getOnlineTickit());
|
||||
UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken =
|
||||
new UsernamePasswordAuthenticationToken(
|
||||
auth,
|
||||
@@ -101,7 +101,9 @@ public class RealmAuthenticationProvider extends AbstractAuthenticationProvider
|
||||
authenticationRealm.grantAuthority(userInfo));
|
||||
usernamePasswordAuthenticationToken.setDetails(
|
||||
new WebAuthenticationDetails(WebContext.getRequest()));
|
||||
|
||||
|
||||
setOnlineTickit(userInfo.getOnlineTickit());
|
||||
|
||||
return usernamePasswordAuthenticationToken;
|
||||
}
|
||||
|
||||
@@ -110,7 +112,7 @@ public class RealmAuthenticationProvider extends AbstractAuthenticationProvider
|
||||
BasicAuthentication basicAuth = (BasicAuthentication) authentication;
|
||||
UserInfo loadeduserInfo = loadUserInfo(basicAuth.getUsername(), "");
|
||||
if (loadeduserInfo != null) {
|
||||
|
||||
|
||||
authenticationRealm.passwordMatches(loadeduserInfo, basicAuth.getPassword());
|
||||
|
||||
authenticationRealm.getPasswordPolicyValidator().passwordPolicyValid(loadeduserInfo);
|
||||
@@ -118,14 +120,16 @@ public class RealmAuthenticationProvider extends AbstractAuthenticationProvider
|
||||
WebContext.setUserInfo(loadeduserInfo);
|
||||
|
||||
authentication.setAuthenticated(true);
|
||||
|
||||
basicAuth.setOnlineTickit(loadeduserInfo.getOnlineTickit());
|
||||
UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(
|
||||
authentication, "PASSWORD", authenticationRealm.grantAuthority(loadeduserInfo));
|
||||
|
||||
WebContext.setAuthentication(authenticationToken);
|
||||
WebContext.setUserInfo(loadeduserInfo);
|
||||
authenticationRealm.insertLoginHistory(loadeduserInfo, basicAuth.getAuthType(), "", "", "SUCCESS");
|
||||
|
||||
|
||||
setOnlineTickit(loadeduserInfo.getOnlineTickit());
|
||||
|
||||
return authenticationToken;
|
||||
}else {
|
||||
String message = WebContext.getI18nValue("login.error.username");
|
||||
@@ -154,6 +158,7 @@ public class RealmAuthenticationProvider extends AbstractAuthenticationProvider
|
||||
WebContext.setUserInfo(loadeduserInfo);
|
||||
BasicAuthentication authentication = new BasicAuthentication();
|
||||
authentication.setUsername(loadeduserInfo.getUsername());
|
||||
authentication.setOnlineTickit(loadeduserInfo.getOnlineTickit());
|
||||
UsernamePasswordAuthenticationToken authenticationToken =
|
||||
new UsernamePasswordAuthenticationToken(
|
||||
authentication,
|
||||
@@ -167,6 +172,8 @@ public class RealmAuthenticationProvider extends AbstractAuthenticationProvider
|
||||
|
||||
authenticationRealm.insertLoginHistory(loadeduserInfo, type, provider, code, message);
|
||||
|
||||
setOnlineTickit(loadeduserInfo.getOnlineTickit());
|
||||
|
||||
return authenticationToken;
|
||||
}else {
|
||||
String i18nMessage = WebContext.getI18nValue("login.error.username");
|
||||
@@ -174,5 +181,14 @@ public class RealmAuthenticationProvider extends AbstractAuthenticationProvider
|
||||
throw new BadCredentialsException(WebContext.getI18nValue("login.error.username"));
|
||||
}
|
||||
}
|
||||
|
||||
public void setOnlineTickit(String tickit) {
|
||||
_logger.debug("set online Tickit " + tickit + " on domain "+ this.applicationConfig.getBaseDomainName());
|
||||
WebContext.setCookie(WebContext.getResponse(),
|
||||
this.applicationConfig.getBaseDomainName(),
|
||||
WebConstants.ONLINE_TICKET_NAME,
|
||||
tickit,
|
||||
0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -59,11 +59,11 @@ public class MvcAutoConfiguration implements InitializingBean {
|
||||
*/
|
||||
@Bean (name = "localeResolver")
|
||||
public CookieLocaleResolver cookieLocaleResolver(
|
||||
@Value("${config.server.domain.sub:maxkey.top}")String subDomainName) {
|
||||
_logger.debug("subDomainName " + subDomainName);
|
||||
@Value("${config.server.domain:maxkey.top}")String domainName) {
|
||||
_logger.debug("DomainName " + domainName);
|
||||
CookieLocaleResolver cookieLocaleResolver = new CookieLocaleResolver();
|
||||
cookieLocaleResolver.setCookieName("maxkey_lang");
|
||||
cookieLocaleResolver.setCookieDomain(subDomainName);
|
||||
cookieLocaleResolver.setCookieDomain(domainName);
|
||||
cookieLocaleResolver.setCookieMaxAge(604800);
|
||||
return cookieLocaleResolver;
|
||||
}
|
||||
|
||||
@@ -71,8 +71,12 @@ public class WebConstants {
|
||||
|
||||
public static final String AUTHENTICATION = "current_authentication";
|
||||
|
||||
public static final String THEME_COOKIE_NAME = "maxkey_theme";
|
||||
public static final String THEME_COOKIE_NAME = "theme_value";
|
||||
|
||||
public static final String LOGIN_ERROR_SESSION_MESSAGE = "login_error_session_message_key";
|
||||
|
||||
public static final String ONLINE_TICKET_NAME = "online_ticket";
|
||||
|
||||
public static final String ONLINE_TICKET_PREFIX = "OT";
|
||||
|
||||
}
|
||||
|
||||
@@ -154,6 +154,11 @@ public final class WebContext {
|
||||
return ((ServletRequestAttributes)
|
||||
RequestContextHolder.getRequestAttributes()).getRequest();
|
||||
}
|
||||
|
||||
public static HttpServletResponse getResponse() {
|
||||
return ((ServletRequestAttributes)
|
||||
RequestContextHolder.getRequestAttributes()).getResponse();
|
||||
}
|
||||
|
||||
/**
|
||||
* get Http Context full Path.
|
||||
@@ -336,11 +341,14 @@ public final class WebContext {
|
||||
* @param time cookie的存在时间
|
||||
*/
|
||||
public static HttpServletResponse setCookie(
|
||||
HttpServletResponse response, String name, String value, int time) {
|
||||
HttpServletResponse response, String domain ,String name, String value, int time) {
|
||||
// new一个Cookie对象,键值对为参数
|
||||
Cookie cookie = new Cookie(name, value);
|
||||
// tomcat下多应用共享
|
||||
cookie.setPath("/");
|
||||
if(domain != null) {
|
||||
cookie.setDomain(domain);
|
||||
}
|
||||
// 如果cookie的值中含有中文时,需要对cookie进行编码,不然会产生乱码
|
||||
try {
|
||||
URLEncoder.encode(value, "utf-8");
|
||||
@@ -348,7 +356,9 @@ public final class WebContext {
|
||||
e.printStackTrace();
|
||||
}
|
||||
// 单位:秒
|
||||
cookie.setMaxAge(time);
|
||||
if(time > 0) {
|
||||
cookie.setMaxAge(time);
|
||||
}
|
||||
// 将Cookie添加到Response中,使之生效
|
||||
response.addCookie(cookie); // addCookie后,如果已经存在相同名字的cookie,则最新的覆盖旧的cookie
|
||||
return response;
|
||||
|
||||
@@ -76,7 +76,7 @@ public class ThemeTagDirective implements TemplateDirectiveModel {
|
||||
if (request.getAttribute(WebConstants.THEME_COOKIE_NAME) == null
|
||||
&& null != WebContext.getUserInfo()) {
|
||||
request.setAttribute(WebConstants.THEME_COOKIE_NAME, "theme");
|
||||
WebContext.setCookie(response,
|
||||
WebContext.setCookie(response, null,
|
||||
WebConstants.THEME_COOKIE_NAME, theme, ConstantsTimeInterval.ONE_WEEK);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user