登录地址支持传递__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);
String url = request.getParameter("__url");
if (StringUtils.isNotBlank(url)) {
WebUtils.issueRedirect(request, response, url, null, true);
} else {
WebUtils.issueRedirect(request, response, getSuccessUrl(), null, true);
}
// AJAX不支持Redirect改用Forward
request.getRequestDispatcher(getSuccessUrl()).forward(request, response);
return false;
}
@@ -55,12 +51,8 @@ public class CasAuthenticationFilter extends org.apache.shiro.cas.CasFilter {
Subject subject = getSubject(request, response);
if (subject.isAuthenticated() || subject.isRemembered()) {
try {
String url = request.getParameter("__url");
if (StringUtils.isNotBlank(url)) {
WebUtils.issueRedirect(request, response, url, null, true);
} else {
WebUtils.issueRedirect(request, response, getSuccessUrl(), null, true);
}
// AJAX不支持Redirect改用Forward
request.getRequestDispatcher(getSuccessUrl()).forward(request, response);
} catch (Exception e) {
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);
// 登录操作如果是Ajax操作直接返回登录信息字符串。
if (ServletUtils.isAjaxRequest((HttpServletRequest) request)) {
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);
}
}
// AJAX不支持Redirect改用Forward
request.getRequestDispatcher(getSuccessUrl()).forward(request, response);
return false;
}

View File

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

View File

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