ONLINE_TICKET

This commit is contained in:
Crystal.Sea
2020-10-22 07:54:52 +08:00
parent 2ab0745441
commit 8df8c0dc06
23 changed files with 144 additions and 37 deletions

View File

@@ -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;

View File

@@ -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();

View File

@@ -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);
}
}

View File

@@ -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;
}

View File

@@ -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";
}

View File

@@ -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;

View File

@@ -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);
}