解决拦截器的对于参数传递无效问题

      今天做项目时,使用拦截器对用户权限检查。拦截器本身没有问题,可是实现权限拦截,但是传递的参数全部都无效了。搞了很久,由于对拦截器的内部机制不是特别熟悉,所以重新研读了一下Struts2的拦截器。找到了原因:给一个Acton配置一个自定义拦截器后,此action就无法使用框架默认的拦截器栈了,这就导致前后台数据传输无效。

      解决方法一般有两种:

      一、显示的使用默认拦截器  

复制代码
 1 <action name="enterSystem_*" class="enterSystemManager" method="{1}">
 2 
 3     <!-- 使用拦截器:进行权限检查 -->
 4 
 5       <interceptor-ref name="defaultStack" />
 6 
 7     <interceptor-ref name="autority" />
 8 
 9      <result name="workerMangerUI">/WEB-INF/page/backstage/system/workerManager.jsp</result>
10 
11     <result name="positionMangerUI">/WEB-INF/page/backstage/system/positionManager.jsp</result>
12 
13    </action>
复制代码

 

二、使用<interceptor-ref name="params" />让参数先传递

 

复制代码
 <action name="enterSystem_*" class="enterSystemManager" method="{1}">

    <!-- 使用拦截器:进行权限检查 -->

    <interceptor-ref name="params" />

    <interceptor-ref name="autority" />

    <result name="workerMangerUI">/WEB-INF/page/backstage/system/workerManager.jsp</result>

    <result name="positionMangerUI">/WEB-INF/page/backstage/system/positionManager.jsp</result>

</action>
复制代码

 

posted @   chenssy  阅读(1547)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示