Welcome to Yumao′s Blog.
Struts2從2.5版本開始
增加了一項AllowedMethod機制
也就是你的method需要是列表内
才可以正常訪問
聽説這樣是極大的加強了Struts2的安全性
但是這也會導致部分非列表内method失效/404Error
我們可以在
com.opensymphony.xwork2.config.entities.ActionConfig
類裏看到如下内容
1 | < global-allowed-methods >execute,input,back,cancel,browse,save,delete,list,index</ global-allowed-methods > |
也就是說 默認僅允許
1 | execute,input,back,cancel,browse,save,delete,list,index |
這幾种method訪問
這也就是爲什麽index可以訪問其他的都不行的原因
找到了原因我們就可以直接在struts2.xml裏面增加自己的method
例如我們需要添加一個login的method
那麽在package標簽下層增加一行
1 | < global-allowed-methods >login</ global-allowed-methods > |
例如:
1 2 3 4 5 6 7 8 | < struts > < package name = "test" namespace = "/" extends = "json-default" > < global-allowed-methods >login</ global-allowed-methods > < action name = "*" class = "systemAction" method = "{1}" > < result name = "login" >/WEB-INF/pages/login.jsp</ result > </ action > </ package > </ struts > |
如果覺得一個個method設置比較繁瑣
那麽可以用
1 | < global-allowed-methods >regex:.*</ global-allowed-methods > |
開啓當前package下的所有method
當然這樣就和struts2.5的安全理念有所相駁了喲
另外struts2還支持註解添加allow
1 | @AllowedMethods |
根據源碼可以知曉傳參為String[]