Commit 730bc1ff authored by xc's avatar xc

shiro限定并发登录人数

parent 27ba6638
......@@ -67,9 +67,21 @@ public class KickoutSessionControlFilter extends AccessControlFilter{
protected boolean onAccessDenied(ServletRequest request, ServletResponse response) throws Exception {
log.info("KickoutSessionControlFilter Not Login begin.......");
Subject subject = getSubject(request, response);
Map<String, Object> map = new HashMap<>();
HttpServletRequest httpServletRequest=(HttpServletRequest) request;
HttpServletResponse httpServletResponse = (HttpServletResponse) response;
// 没有登陆或没有设置“记住我”
HttpServletRequest request1 = (HttpServletRequest) request;
log.info("KickoutSessionControlFilter isAuthenticated isRemembered {} {} {} {}.......",request1.getRequestURI(),subject.isAuthenticated(),subject.isRemembered(),!subject.isAuthenticated() && !subject.isRemembered());
if (!subject.isAuthenticated() && !subject.isRemembered()) {
log.info("KickoutSessionControlFilter isAuthenticated and isRemembered Please login first .......");
// 没有登陆,抛出异常
thrLogoutException(httpServletRequest,httpServletResponse, "1001", "请先登录后再执行操作");
return false;
}
Session session = subject.getSession();
Serializable sessionId = session.getId();
// 登录超时
Integer userId = null;
try {
......@@ -85,7 +97,8 @@ public class KickoutSessionControlFilter extends AccessControlFilter{
userId = accountInfo.getId();
} catch (Exception en) {
//员工端
Staff staff = (Staff)SecurityUtils.getSubject().getPrincipal();
log.info("KickoutSessionControlFilter getSubject : {}..getPrincipal:{},.....",SecurityUtils.getSubject(),SecurityUtils.getSubject().getPrincipal());
Staff staff = (Staff) SecurityUtils.getSubject().getPrincipal();
log.info("KickoutSessionControlFilter staff : {}.......",staff.toString());
userId = staff.getId();
}
......@@ -100,19 +113,7 @@ public class KickoutSessionControlFilter extends AccessControlFilter{
thrLogoutException(httpServletRequest,httpServletResponse, "1003", "登录超时,请重新登录");
return false;
}
// 没有登陆或没有设置“记住我”
HttpServletRequest request1 = (HttpServletRequest) request;
log.info("KickoutSessionControlFilter isAuthenticated {} .......",subject.isAuthenticated());
log.info("KickoutSessionControlFilter isRemembered {} .......",subject.isRemembered());
log.info("KickoutSessionControlFilter isAuthenticated isRemembered {} {} .......",request1.getRequestURI(),!subject.isAuthenticated() && !subject.isRemembered());
if (!subject.isAuthenticated() && !subject.isRemembered()) {
log.info("KickoutSessionControlFilter isAuthenticated and isRemembered Please login first .......");
// 没有登陆,抛出异常
thrLogoutException(httpServletRequest,httpServletResponse, "1001", "请先登录后再执行操作");
return false;
}
Session session = subject.getSession();
Serializable sessionId = session.getId();
log.info("KickoutSessionControlFilter 如果被踢出了,直接退出,重定向到踢出后的地址-----返回1002");
//如果被踢出了,直接退出,重定向到踢出后的地址
if (session.getAttribute("kickout") != null) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment