shiro控制不同模块登录地址

来源:互联网 发布:女寝还魂知乎 编辑:程序博客网 时间:2024/05/21 12:50
一个模块可能是后台,可能是前台,这个理如何实现区分2个模块的登录地址
针对模块写一个过滤器,设置当用户没有登录时应该去哪个地址,超简单,多个模块可以区分地址跳转
多模块公用过滤器也是可以的
@Override
  protected boolean onAccessDenied(ServletRequest request,
      ServletResponse response) throws Exception {
    //获取当前网页地址
    HttpServletRequest httpServletRequest = (HttpServletRequest) request;
    httpServletRequest.getRequestURI();
    
    Subject subject = getSubject(request, response);
    if (!subject.isAuthenticated() && !subject.isRemembered()) {
      WebUtils.issueRedirect(request, response, getLoginUrl());
      return false;
    }

    return true;
  }
标签: <无>

代码片段(3)[全屏查看所有代码]

1. [代码][Java]代码     

?
1
2
3
4
5
6
7
<beans:bean id="customlogin"
        class="com.sniper.springmvc.shiro.filter.CustomLogonUrl">
        <beans:property name="loginUrl"value="/company/login"/>
    </beans:bean>
 
//增加模块的filter的控制
/company/**=customlogin

2. [代码][Java]代码     

?
1
2
3
4
5
6
<beans:property name="filters">
            <beans:map>
                <beans:entry key="kickout"value-ref="kickout"/>
                <beans:entry key="customlogin"value-ref="customlogin"/>
            </beans:map>
        </beans:property>

3. [文件] CustomLogonUrl.java ~ 1KB     下载(0)     

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
packagecom.sniper.springmvc.shiro.filter;
 
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
importjavax.servlet.http.HttpServletRequest;
 
importorg.apache.shiro.subject.Subject;
importorg.apache.shiro.web.filter.AccessControlFilter;
importorg.apache.shiro.web.util.WebUtils;
 
/**
 * 控制企业没有登录访问页面似的转向
 *
 * @author suzhen
 *
 */
publicclass CustomLogonUrl extendsAccessControlFilter {
 
    @Override
    protectedboolean isAccessAllowed(ServletRequest request,
            ServletResponse response, Object mappedValue) throwsException {
        returnfalse;
    }
 
    @Override
    protectedboolean onAccessDenied(ServletRequest request,
            ServletResponse response) throwsException {
        // 获取当前网页地址
        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
        httpServletRequest.getRequestURI();
        Subject subject = getSubject(request, response);
        if(!subject.isAuthenticated() && !subject.isRemembered()) {
            WebUtils.issueRedirect(request, response, getLoginUrl());
            returnfalse;
        }
        returntrue;
    }
}
0 0