首页 > Struts2的拦截器只允许有权限用户访问action

Struts2的拦截器只允许有权限用户访问action

1、定义拦截器,继承MethodFilterInterceptor 

package com.life.stuts.interceptor;import java.util.Map;import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;/*** 如果不是login的adction,使用自定义拦截器判断用户是否为空。为空,跳转到登陆页面;否则,继续执行。* 在配置拦截器属性excludeMethods、includeMethods进行方法过滤时发现不起作用。* 要想使方法过滤配置起作用,拦截器需要继承MethodFilterInterceptor类。* MethodFilterInterceptor类是AbstractInterceptor的子类* @author JL* */public class SellerInterceptor extends MethodFilterInterceptor {/*** */private static final long serialVersionUID = 1L;@Overrideprotected String doIntercept(ActionInvocation invocation) throws Exception {// TODO Auto-generated method stubMap<String, Object> sessionValues = invocation.getInvocationContext().getSession();String seller = (String) sessionValues.get("seller");// 如果没有管理员登陆或商家登陆,就返回到登陆页面,否则继续访问原actionSystem.out.println("action拦截器");if (seller == null) {return "loginscript";}return invocation.invoke();}}

2、struts.xml的配置,希望对那个action进行拦截就把interceptor 放里面,要加上defaultStack。

        <interceptors><interceptor name="authentication"class="com.life.stuts.interceptor.AuthenticationInterceptor">interceptor>interceptors>
<global-results><result name="login">/result>global-results>
<action name="*_manage" method="{1}" class="ManageAction"><interceptor-ref name="authentication">interceptor-ref><interceptor-ref name="defaultStack">interceptor-ref>action>

 3、实现对action的某些方法不拦截

excludeMethods表示不进行拦截

includeMethods表示要拦截

<interceptor-ref name="sellerauthentication"><param name="includeMethods">param><param name="excludeMethods">login,logoutparam>interceptor-ref>

 

Done

转载于:https://www.cnblogs.com/xingyyy/p/3896831.html

更多相关:

  • 问题: 前面开发项目时碰到一个问题,ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是很可惜被浏览器给拦截了,怎么解决这个问题呢? 分析: 浏览器之所以拦截新开窗口是因为该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了(不过如果是 _self 的话就不会有这个限制),即使 aj...

  • 引言 在这个-SLAM建图和导航仿真实例-项目中,主要分为三个部分,分别是 (一)模型构建(二)根据已知地图进行定位和导航(三)使用RTAB-MAP进行建图和导航 该项目的slam_bot已经上传我的Github。 这是第三部分,完成效果如下 图1 建图和导航 三、使用RTAB-Map进行建图和导航 1. rtab...

  • 引言 在这个-SLAM建图和导航仿真实例-项目中,主要分为三个部分,分别是 (一)模型构建(二)根据已知地图进行定位和导航(三)使用RTAB-MAP进行建图和导航 该项目的slam_bot已经上传我的Github。 由于之前的虚拟机性能限制,我在这个项目中使用了新的ubantu 16.04环境,虚拟机配置 内存 8GCPU...

  • [{name:1},{name:2}].forEach((v,i,ar) => {console.log(v,i,ar)});//基础遍历[{name:1},{name:2}].map((v) => v.name);//[1,2]返回对象数组中指定字段值的一位数组(不改变原始数组)[{name:1},{name:2},{name:3}...

  • 体验内容 使用gmapping方法利用turtlebot底盘移动信息和激光雷达数据进行建图。 1. 安装一些依赖包 sudo apt-get install ros-melodic-move-base* sudo apt-get install ros-melodic-map-server* sudo apt-get insta...

  • 前言 我们知道Java/Python这种语言能够很好得 支持反射。反射机制 就是一种用户输入的字符串到对应实现方法的映射,比如http接口中 用户传入了url,我们需要调用该url对应的方法/函数对象 从而做出对应的操作。 而C++ 并没有友好得支持这样的操作,而最近工作中需要通过C++实现http接口,这个过程想要代码实现得优雅...

  • 设置路由的default的Controller和Action可以达到我们预期的效果,代码如下所示: public class RouteConfig {public static void RegisterRoutes(RouteCollection routes){routes.IgnoreRoute("{resource}.ax...