Grails登录失败不重定向

时间:2014-03-27 18:26:43

标签: grails websphere

我们有一个Grails 1.3.7应用程序,它使用LDAP和自定义登录屏幕来处理安全性和授权。用户角色在web.xml中设置,并映射到WAS 8服务器上的组。

升级到Grails 2.1.0后,我们注意到登录失败不会重定向到相应的gsp页面,在我们的例子中是fail_login.gsp。相反,URL更改为fail_login.gsp,但实际呈现的页面是原始login.gsp。

web.xml文件是使用grails install-templates生成的,对它的唯一更改是添加安全角色,安全性约束和登录配置部分。

<security-role>
    <description>View</description>
    <role-name>VIEW</role-name>
</security-role>
    <security-role>
    <description>Admin</description>
    <role-name>ADMIN</role-name>
</security-role>

<security-constraint>
    <web-resource-collection>
        <web-resource-name>user</web-resource-name>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>VIEW</role-name>
        <role-name>ADMIN</role-name>
    </auth-constraint>
</security-constraint>

<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>Java EE Login</realm-name>
    <form-login-config>
        <form-login-page>/login.gsp</form-login-page>
        <form-error-page>/fail_login.gsp</form-error-page>
    </form-login-config>
</login-config>

我们的UrlMappings.groovy与1.3.7版本相同。

class UrlMappings {

static mappings = {
    "/$controller/$action?/$id?"{
        constraints {
            // apply constraints here
        }
    }
    "/"(view:"/index")
    "500"(view:'/error_beam')
    "404"(controller: "error", action: "notFound")
    "403"(view:'/fail_login')
    "/log4jAdmin/dynamicLog4jAdmin.gsp"(controller: 'log4jAdmin', action: 'log4jAdmin')
    "/dynamicLog4jAdmin.gsp"(controller: 'log4jAdmin', action: 'log4jAdmin')
}
}

如果登录有任何问题,我在web.xml中的在线阅读<form-error-page>/fail_login.gsp</form-error-page>应该重定向到该页面。如果没有别的403错误也应映射到该页面。登录工作正常,因此它不是安全角色或其映射的问题。有什么想法吗?

[UPDATE] 看起来web.xml无法在其当前目录/views/fail_login.gsp中找到fail_login.gsp页面。将login和fail_login页面移动到/web-app/gsps下可以修复fail_login.gsp未呈现的问题,但它也会更改可能是交易破坏者的登录URL。我找不到任何关于web.xml在form-login-config部分中查找gsps的文档,特别是Grails 1.3.7和2.1.0之间是否应该有所不同

0 个答案:

没有答案