<package name="shop" namespace="/" extends="struts-default">
<action name="user_*" class="userAction" method="{1}">
<result name="success">/WEB-INF/jsp/login.jsp</result>
</action>
</package>
訪問 /user_login 時報錯:
There is no Action mapped for namespace [/] and action name [user_login] associated with context path [/shop].
struts.xml 配置:action name、class、method、result 名稱Struts 2.3 引入 方法白名單機制,通配符映射的動態方法需顯式聲明允許訪問,否則被安全攔截器攔截。
<action name="user_*" class="userAction" method="{1}">
<result name="success">/WEB-INF/jsp/login.jsp</result>
<allowed-methods>login,register,logout</allowed-methods> <!-- 關鍵:聲明允許的方法 -->
</action>
<allowed-methods>*</allowed-methods>(不推薦生產)| 配置項 | 作用 | 建議值 |
|---|---|---|
struts.enable.DynamicMethodInvocation | 啟用 action!method 風格動態調用 | false(通配符模式下) |
<allowed-methods> | 通配符/REST 模式方法白名單 | 必配,精確列出方法名 |