struts2 权限控制

如果一个系统分为前台和后台,前台需要用户登录才能使用,后台需要管理员登录才能正常使用,
那么怎么样用struts2中的拦截器分别控制前后台的权限。

2个回答

简单的可以这样做:

[color=blue][b]STEP01 在Struts2的配置文件中,定义2个package:[/b][/color]

1个package是包括前台所有的Action

另一个package包括后台管理员的所有的Action。
[b][color=blue]
STEP02:然后定义一个AuthInterceptor,简单的这样写:[/color][/b]

[code="java"] public String intercept(ActionInvocation invocation) throws Exception {

    Map<String, Object> map = invocation.getInvocationContext()
            .getSession();
    User user = (User) map.get("user");

    if (user == null) {
        return "login";
    } else {
        return invocation.invoke();
    }
}[/code]

[color=blue]
[b]STEP03:将AuthInterceptor加入到管理员的那个package的默认InterceptorStack中。[/b][/color]

[code="xml"]
class="XXXX.AuthInterceptor" />

<interceptor-ref name="defaultStack"/>
<interceptor-ref name="authInterceptor"/>
</interceptor-stack>



............

[/code]

[color=blue][b]基本的权限检查完成![/b][/color]

[color=blue][b]注意在Interceptor中,检查用户的是否是管理员时,要根据登录时设置的标志位来进行。

上个回答中的是这样设置的:

管理员登录,会在Session中放入一个User的对象。

如果,系统将普通用户、管理员用户的标识放入到Session的其他内容中,则相应地改变AuthInterceptor中的判断语句即可。[/b][/color]

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问