我正在为我的网络应用程序使用Struts 2并使用身份验证部分。我想知道何时重定向页面(操作),如何更改显示的重定向到的URL而不是从?
例如,我有一个login.action页面,它将提交给authentication.action,如果用户名和密码正确,它将被重定向到securePage.action。
我知道如何进行重定向部分(我尝试了chain和redirectAction结果类型)。我想要的是当页面被重定向到安全页面时,URL将显示.... / securePage.action。现在,它仍然是带有会话ID的authentication.action。
我正在分享我的struts.xml部分
<action name="login">
<result>index.jsp</result>
</action>
<action name="authentication" class="com.myapp.action.AuthenticationAction">
<result name="success" type="chain">hello</result>
<result name="failure">index.jsp</result>
</action>
<action name="hello"
class="com.myapp.action.HelloWorldAction"
method="execute">
<interceptor-ref name="myDefault"/>
<result name="success">/HelloWorld.jsp</result>
<result name="failure">index.jsp</result>
</action>
login.action将打开index.jsp,这是将提交给身份验证的登录
身份验证的操作类只需从登录中获取用户名和密码,如果通过则将会话值设置为“authorized”,如果用户名和密码不匹配,则设置会重定向。
然后,身份验证将使用结果类型链重定向到hello(安全页面)。
hello的操作使用我自己的authInterceptor来检查会话值 - 当前会话是否被授权。如果没有,请返回登录。
答案 0 :(得分:1)
尝试使用type="chain"
。
type="redirectAction"
将当前的链操作更改为
<action name="authentication" class="com.myapp.action.AuthenticationAction">
<result name="success" type="redirectAction">
<param name="actionName">hello</param>
<param name="namespace">/</param>
</result>
<result name="failure">index.jsp</result>
</action>
<action name="hello"
class="com.myapp.action.HelloWorldAction"
method="execute">
<interceptor-ref name="myDefault"/>
<result name="success">/HelloWorld.jsp</result>
<result name="failure">index.jsp</result>
</action>
有关详细信息,请查看文档here
答案 1 :(得分:0)
您可以在您的 struts.xml
中使用以下内容,您可以找到您的 Apache Docs Reference here
<struts>
.
.
<constant name="struts.action.extension" value="" />
.
.
</struts>