登录地址支持传递__url参数,指定登录后跳转的页面。

This commit is contained in:
thinkgem
2019-02-27 21:37:49 +08:00
parent 3a5c9fc5c9
commit 85790225af
4 changed files with 19 additions and 29 deletions

View File

@@ -38,12 +38,8 @@ public class CasAuthenticationFilter extends org.apache.shiro.cas.CasFilter {
// 登录成功后初始化授权信息并处理登录后的操作 // 登录成功后初始化授权信息并处理登录后的操作
authorizingRealm.onLoginSuccess((LoginInfo)subject.getPrincipal(), (HttpServletRequest)request); authorizingRealm.onLoginSuccess((LoginInfo)subject.getPrincipal(), (HttpServletRequest)request);
String url = request.getParameter("__url"); // AJAX不支持Redirect改用Forward
if (StringUtils.isNotBlank(url)) { request.getRequestDispatcher(getSuccessUrl()).forward(request, response);
WebUtils.issueRedirect(request, response, url, null, true);
} else {
WebUtils.issueRedirect(request, response, getSuccessUrl(), null, true);
}
return false; return false;
} }
@@ -55,12 +51,8 @@ public class CasAuthenticationFilter extends org.apache.shiro.cas.CasFilter {
Subject subject = getSubject(request, response); Subject subject = getSubject(request, response);
if (subject.isAuthenticated() || subject.isRemembered()) { if (subject.isAuthenticated() || subject.isRemembered()) {
try { try {
String url = request.getParameter("__url"); // AJAX不支持Redirect改用Forward
if (StringUtils.isNotBlank(url)) { request.getRequestDispatcher(getSuccessUrl()).forward(request, response);
WebUtils.issueRedirect(request, response, url, null, true);
} else {
WebUtils.issueRedirect(request, response, getSuccessUrl(), null, true);
}
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }

View File

@@ -235,19 +235,8 @@ public class FormAuthenticationFilter extends org.apache.shiro.web.filter.authc.
// 登录成功后初始化授权信息并处理登录后的操作 // 登录成功后初始化授权信息并处理登录后的操作
authorizingRealm.onLoginSuccess((LoginInfo)subject.getPrincipal(), (HttpServletRequest) request); authorizingRealm.onLoginSuccess((LoginInfo)subject.getPrincipal(), (HttpServletRequest) request);
// 登录操作如果是Ajax操作直接返回登录信息字符串。 // AJAX不支持Redirect改用Forward
if (ServletUtils.isAjaxRequest((HttpServletRequest) request)) { request.getRequestDispatcher(getSuccessUrl()).forward(request, response);
request.getRequestDispatcher(getSuccessUrl()).forward(request, response); // AJAX不支持Redirect改用Forward
}
// 登录成功直接返回到首页
else {
String url = request.getParameter("__url");
if (StringUtils.isNotBlank(url)) {
WebUtils.issueRedirect(request, response, url, null, true);
} else {
WebUtils.issueRedirect(request, response, getSuccessUrl(), null, true);
}
}
return false; return false;
} }

View File

@@ -252,10 +252,10 @@ public class LoginController extends BaseController{
} }
} }
// 获取登录成功页面 // 获取登录成功后跳转的页面
String successUrl = Global.getProperty("shiro.successUrl"); String successUrl = request.getParameter("__url");
if (!StringUtils.contains(successUrl, "://")){ if (StringUtils.isBlank(successUrl)){
successUrl = request.getContextPath() + successUrl; successUrl = Global.getProperty("shiro.successUrl");
} }
// 登录操作如果是Ajax操作直接返回登录信息字符串。 // 登录操作如果是Ajax操作直接返回登录信息字符串。
@@ -268,6 +268,9 @@ public class LoginController extends BaseController{
model.addAttribute("message", text("sys.login.getInfo")); model.addAttribute("message", text("sys.login.getInfo"));
} }
model.addAttribute("sessionid", (String)session.getId()); model.addAttribute("sessionid", (String)session.getId());
if (!StringUtils.contains(successUrl, "://")){
successUrl = request.getContextPath() + successUrl;
}
model.addAttribute("__url", successUrl); // 告诉浏览器登录后跳转的页面 model.addAttribute("__url", successUrl); // 告诉浏览器登录后跳转的页面
return ServletUtils.renderObject(response, model); return ServletUtils.renderObject(response, model);
} }
@@ -301,6 +304,11 @@ public class LoginController extends BaseController{
return null; return null;
} }
// 非无类型用户,自动根据用户类型设置默认菜单的归属系统(个性化示例)
//if (!User.USER_TYPE_NONE.equals(user.getUserType())){
// session.setAttribute("sysCode", user.getUserType());
//}
// 返回指定用户类型的首页视图 // 返回指定用户类型的首页视图
String view = UserUtils.getUserTypeValue(user.getUserType(), "indexView"); String view = UserUtils.getUserTypeValue(user.getUserType(), "indexView");
if(StringUtils.isNotBlank(view)){ if(StringUtils.isNotBlank(view)){

View File

@@ -47,6 +47,7 @@
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<input type="hidden" name="__url" value="${parameter.__url!}">
<button type="submit" class="btn btn-primary btn-block btn-flat" <button type="submit" class="btn btn-primary btn-block btn-flat"
id="btnSubmit" data-loading="${text('登录验证成功,正在进入...')}" id="btnSubmit" data-loading="${text('登录验证成功,正在进入...')}"
data-login-valid="${text('正在验证登录,请稍后...')}">${text('立即登录')}</button> data-login-valid="${text('正在验证登录,请稍后...')}">${text('立即登录')}</button>