使用 __url 参数统一管理成功跳转地址
This commit is contained in:
@@ -261,21 +261,19 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica
|
|||||||
protected boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception {
|
protected boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception {
|
||||||
// 是否在登录后生成新的Session(默认false)
|
// 是否在登录后生成新的Session(默认false)
|
||||||
if (Global.getPropertyToBoolean("shiro.isGenerateNewSessionAfterLogin", "false")){
|
if (Global.getPropertyToBoolean("shiro.isGenerateNewSessionAfterLogin", "false")){
|
||||||
String[] keys = new String[] {ValidCodeUtils.VALID_CODE};
|
String[] keys = new String[] { ValidCodeUtils.VALID_CODE };
|
||||||
Map<String, Object> map = MapUtils.newHashMap();
|
Map<String, Object> attrMap = MapUtils.newHashMap();
|
||||||
final Session sessionOld = UserUtils.getSession();
|
final Session sessionOld = UserUtils.getSession();
|
||||||
for (String key : keys) {
|
for (String key : keys) {
|
||||||
Object value = sessionOld.getAttribute(key);
|
Object value = sessionOld.getAttribute(key);
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
map.put(key, value);
|
attrMap.put(key, value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
UserUtils.getSubject().logout();
|
UserUtils.getSubject().logout();
|
||||||
// 恢复生成新的Session之前的Session数据
|
// 恢复生成新的Session之前的Session数据
|
||||||
final Session sessionNew = UserUtils.getSession();
|
final Session sessionNew = UserUtils.getSession();
|
||||||
map.forEach((key, value) -> {
|
attrMap.forEach(sessionNew::setAttribute);
|
||||||
sessionNew.setAttribute(key, value);
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
return super.executeLogin(request, response);
|
return super.executeLogin(request, response);
|
||||||
}
|
}
|
||||||
@@ -300,15 +298,10 @@ public class FormFilter extends org.apache.shiro.web.filter.authc.FormAuthentica
|
|||||||
HttpServletRequest request = (HttpServletRequest)servletRequest;
|
HttpServletRequest request = (HttpServletRequest)servletRequest;
|
||||||
// 登录成功后初始化授权信息并处理登录后的操作
|
// 登录成功后初始化授权信息并处理登录后的操作
|
||||||
authorizingRealm.onLoginSuccess(UserUtils.getLoginInfo(), request);
|
authorizingRealm.onLoginSuccess(UserUtils.getLoginInfo(), request);
|
||||||
// 跳转到登录成功页面
|
// 跳转到登录成功页面,若未指定则获取默认 shiro.successUrl in application.yml
|
||||||
String successUrl = getSuccessUrl(); // shiro.successUrl in application.yml
|
String successUrl = (String)request.getAttribute("__url");
|
||||||
if (StringUtils.contains((request).getRequestURI(), "/oauth2/callback/")) {
|
if (StringUtils.isBlank(successUrl)) {
|
||||||
successUrl = Global.getConfig("oauth2.successUrl", successUrl);
|
successUrl = getSuccessUrl();
|
||||||
} else if (StringUtils.contains((request).getRequestURI(), "/sso")) {
|
|
||||||
String ssoSuccessUrl = (String)request.getAttribute("__url");
|
|
||||||
if (StringUtils.isNotBlank(ssoSuccessUrl)) {
|
|
||||||
successUrl = ssoSuccessUrl;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ServletUtils.redirectUrl(request, (HttpServletResponse)response, successUrl);
|
ServletUtils.redirectUrl(request, (HttpServletResponse)response, successUrl);
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user