我正在使用spring security插件登录应用程序。 spring security具有默认的auth.gsp
页面用于登录。我创建了自己的auth.gsp
页面以添加其他内容
auth.gsp
<g:form action='${postUrl.encodeAsURL()}' method='POST' id='loginForm' autocomplete='off' class="login-form">
<g:textField class="field" name="username" value="${params.userName}"/>
<g:passwordField class="field" name="password"/>
<button>login</button>
<p class="message"><a href="elb/index">Forgot Password?</a></p>
<p class="message"><a id="next" name="next" href="#">Have Invitation Code?</a></p>
</g:form>
问题是,${postUrl}
在网址中包含%252F
。这是完整的网址:http://localhost:8080/login/%252Flogin%252Fauthenticate/loginForm
。我已经尝试了stackoverflow上给出的每个可能的答案,但没有任何效果。
答案 0 :(得分:2)
尝试使用
<g:form url='${postUrl}' method='POST' id='loginForm' autocomplete='off' class="login-form">
<g:textField class="field" name="username" value="${params.userName}"/>
<g:passwordField class="field" name="password"/>
<button>login</button>
<p class="message"><a href="elb/index">Forgot Password?</a></p>
<p class="message"><a id="next" name="next" href="#">Have Invitation Code?</a></p>
</g:form>
设置完整网址时,请使用&#39; url&#39;属性。如果您使用&#34; action&#34;,则必须设置操作名称。
也不要使用encodeAsURL()。 encodeAsURL意味着,您想要转义特殊字符,例如&#39; /&#39;,&#39;?&#39;被替换为&#39;%..&#39;实体。