Grails Spring安全UI-无法打开注册/忘记密码页面

Grails Spring安全UI-无法打开注册/忘记密码页面,grails,spring-security,grails-2.0,Grails,Spring Security,Grails 2.0,我已经将“:spring security ui:1.0-RC1”放入我的BuildConfig中并进行了编译,然后我使用spring ui命令创建了auth、register和securityInfo视图和控制器。我还将一个用户放在我的数据库中进行测试 然而,当我测试它时,我只进入登录页面,在登录之后,我回到grails页面。但是按钮“注册新用户”和“忘记密码”不起作用,我只会被重定向到“登录”页面!即使文件正确呈现为*.html 以下是视图结构的外观: 我的ÙRLMappings如下所示:

我已经将
“:spring security ui:1.0-RC1”
放入我的
BuildConfig
中并进行了编译,然后我使用spring ui命令创建了
auth、register和securityInfo
视图和控制器。我还将一个用户放在我的数据库中进行测试

然而,当我测试它时,我只进入登录页面,在登录之后,我回到grails页面。但是按钮“注册新用户”和“忘记密码”不起作用,我只会被重定向到“登录”页面!即使文件正确呈现为
*.html

以下是视图结构的外观:

我的
ÙRLMappings
如下所示:

class UrlMappings {

    static mappings = {
        "/$controller/$action?/$id?(.${format})?"{
            constraints {
                // apply constraints here
            }
        }

        "/"(view:"/index")
        "500"(view:'/error')
    }
}
如果你能回答我的问题,我将不胜感激

更新 这是我的
认证gsp

<html>

<head>
<title><g:message code='spring.security.ui.login.title'/></title>
<meta name='layout' content='register'/>
</head>

<body>

<p/>

<div class="login s2ui_center ui-corner-all" style='text-align:center;'>
    <div class="login-inner">
    <form action='${postUrl}' method='POST' id="loginForm" name="loginForm" autocomplete='off'>
    <div class="sign-in">

    <h1><g:message code='spring.security.ui.login.signin'/></h1>

    <table>
        <tr>
            <td><label for="username"><g:message code='spring.security.ui.login.username'/></label></td>
            <td><input name="j_username" id="username" size="20" /></td>
        </tr>
        <tr>
            <td><label for="password"><g:message code='spring.security.ui.login.password'/></label></td>
            <td><input type="password" name="j_password" id="password" size="20" /></td>
        </tr>
        <tr>
            <td colspan='2'>
                <input type="checkbox" class="checkbox" name="${rememberMeParameter}" id="remember_me" checked="checked" />
                <label for='remember_me'><g:message code='spring.security.ui.login.rememberme'/></label> |
                <span class="forgot-link">
                    <g:link controller='register' action='forgotPassword'><g:message code='spring.security.ui.login.forgotPassword'/></g:link>
                </span>
            </td>
        </tr>
        <tr>
            <td colspan='2'>
                <s2ui:linkButton elementId='register' controller='register' messageCode='spring.security.ui.login.register'/>
                <s2ui:submitButton elementId='loginButton' form='loginForm' messageCode='spring.security.ui.login.login'/>
            </td>
        </tr>
    </table>

    </div>
    </form>
    </div>
</div>

<script>
$(document).ready(function() {
    $('#username').focus();
});

<s2ui:initCheckboxes/>

</script>

</body>
</html>

| $(文档).ready(函数(){ $(“#用户名”).focus(); });


你的控制器呢??我没听说过他们,你将他们包括在你的配置文件中。
定义你的成功处理程序并定义一个成功登录的控制器。

grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/homePage'
然后,如果您已经登录,则使用安全注释或使用
InterceptMapURL
设置对控制器的访问权限。

看看你的问题,你只是没有配置好安全插件而已。好吧,看看github中grails的其他spring安全实现,我认为这将对您有所帮助。

您的控制器呢??我没听说过他们,你将他们包括在你的配置文件中。
定义你的成功处理程序并定义一个成功登录的控制器。

grails.plugin.springsecurity.successHandler.defaultTargetUrl = '/homePage'
然后,如果您已经登录,则使用安全注释或使用
InterceptMapURL
设置对控制器的访问权限。

看看你的问题,你只是没有配置好安全插件而已。我们来看一下github中grails的其他spring安全实现,我认为这会对您有所帮助。

您可能需要在
grails.plugin.springsecurity.ControllerNotations.staticRules
中添加以下两条规则。它位于
Config.groovy
文件中

'/register/index':                ['permitAll'],
'/register/forgotPassword':       ['permitAll'],

否则,spring安全性会将您的请求跳回登录/身份验证屏幕

您可能需要在
grails.plugin.springsecurity.controllernotations.staticRules
中添加以下两条规则。它位于
Config.groovy
文件中

'/register/index':                ['permitAll'],
'/register/forgotPassword':       ['permitAll'],

否则,spring安全性会将您的请求跳回登录/身份验证屏幕

只需向RegisterController添加匿名角色即可

import grails.plugin.springsecurity.annotation.Secured;

@Secured(['ROLE_ANONYMOUS'])
class RegisterController extends grails.plugin.springsecurity.ui.RegisterController {
}

只需将匿名角色添加到RegisterController

import grails.plugin.springsecurity.annotation.Secured;

@Secured(['ROLE_ANONYMOUS'])
class RegisterController extends grails.plugin.springsecurity.ui.RegisterController {
}

我猜您已经将您的注册设置为需要在注释或请求映射中进行身份验证,而忘记了密码页。当您尝试注册时,是否收到错误消息?@daguru Thx,请回答!不,我没有得到stacktrace,也没有错误页面…@tim_yates Thx,谢谢你的回答!我没有改变地图上的任何东西。我的注册和忘记密码页面是由
springui
生成的页面。我的
Config.groovy
文件中也没有配置。我应该向我的文件中添加什么?有什么建议吗?我猜你已经设置了你的注册并且忘记了密码页,当你尝试注册时,你会收到错误消息吗?@daguru-Thx获取你的答案!不,我没有得到stacktrace,也没有错误页面…@tim_yates Thx,谢谢你的回答!我没有改变地图上的任何东西。我的注册和忘记密码页面是由
springui
生成的页面。我的
Config.groovy
文件中也没有配置。我应该向我的文件中添加什么?有什么建议吗?谢谢你的回答!然而,我的问题不是我不能登录,我的问题是在我呈现的html页面上,指向注册表和忘记密码页面的两个链接不起作用!谢谢你的回答!然而,我的问题不是我不能登录,我的问题是在我呈现的html页面上,指向注册表和忘记密码页面的两个链接不起作用!可能还需要“/register/register':['permitAll'],“/register/verifyRegistration':['permitAll'],“/register/resetPassword':['permitAll']访问操作可能还需要“/register/register':['permitAll'],”/register/verifyRegistration':['permitAll'],“/register/resetPassword':['permitAll']访问操作