如果一个系统分为前台和后台,前台需要用户登录才能使用,后台需要管理员登录才能正常使用,
那么怎么样用struts2中的拦截器分别控制前后台的权限。
简单的可以这样做:
[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]