struts2使用拦截器实现权限控制
Struts2中可以使用自定义拦截器,实现登录及权限控制功能。
具体看下面的步骤:
1. 自定义拦截器类, 类 继承 AbstractInterceptor类
public class AuthorityInterceptor extends AbstractInterceptor {
public String intercept(ActionInvocation invocation) throws Exception {
ActionContext ctx = invocation.getInvocationContext();
User mu = (User) ctx.getSession().get("USER");
//登录控制
if (mu != null && mu.getUserName() != null) {
String actionName = invocation.getInvocationContext().getName();
//权限控制代码写这里
return invocation.invoke();
} else {
return "loginError";
}
}
}
2. 编写struts.xml
<package name="all" extends="struts-default">
<!-- 配置拦截器 -->
<interceptors>
<interceptor name="authority" class="com.myinterceptor.AuthorityInterceptor" />
<interceptor-stack name="mydefault">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="authority" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="mydefault" />
<!-- <default-action-ref name="loginMasUser" /> -->
<!-- 配置全局跳转界面 -->
<global-results>
<result name="loginError" type="redirect">login.jsp</result>
<result name="error">error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping result="error" exception="java.lang.Exception"></exception-mapping>
</global-exception-mappings>
</package>
3 . 让项目模块实现拦截器
其他模块新建struts配置文件,并继承配置有拦截器的包,访问dept模块时就会进入拦截器进行拦截,例: struts-dept.xml,
<package name="dept" namespace="/" extends="all">
<!-- 配置操纵 dept 的action-->
</package>
其他模块按照dept模块进行配置就可以了
就这样,客户端每次发送请求到action时就会进行拦截了。
需要注意的:登录与登出action不要配置到拦截器里
上一篇: SLAM14讲-CMake的使用
下一篇: 敏捷开发与项目管理实战系列文章
推荐阅读
-
SpringBoot+JWT实现登录权限控制(代码)
-
利用HTML5实现使用按钮控制背景音乐开关
-
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
-
使用spring拦截器手写权限认证框架
-
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
-
thinkPHP5使用Rabc实现权限管理
-
thinkPHP3.2使用RBAC实现权限管理的实现
-
如何使用向日葵远程控制软件实现远程控制、管理、操作等一系列项目的图文教程
-
SpringBoot+JWT实现登录权限控制(代码)
-
asp.net core 使用 AccessControlHelper 控制访问权限