grails spring安全自定义用户注册页面

grails spring安全自定义用户注册页面,grails,spring-security,Grails,Spring Security,我正在尝试创建一个使用SpringSecurityCore2.0的应用程序,并尝试创建一个自定义注册页面。我认为我的问题在于我的register.gsp,因为每次我尝试注册一个新用户时,它都会重定向到一个完全空白的用户。这种情况的进一步证据是,我在register操作中包含了几个println(),这些println()应该根据注册失败的位置触发,但在任何时候都不会触发。此外,没有在dbconsole中创建用户。请看一下我的普惠制: <html> <head> &

我正在尝试创建一个使用SpringSecurityCore2.0的应用程序,并尝试创建一个自定义注册页面。我认为我的问题在于我的register.gsp,因为每次我尝试注册一个新用户时,它都会重定向到一个完全空白的用户。这种情况的进一步证据是,我在register操作中包含了几个println(),这些println()应该根据注册失败的位置触发,但在任何时候都不会触发。此外,没有在dbconsole中创建用户。请看一下我的普惠制:

<html>
<head>
    <meta name="layout" content="front"/>
    <title>MSK | Register</title>
    <style>
        ...
    </style>
</head>
<body>
    <div class="jumbotron">
        <form action="${postUrl ?: '/home/register'}" method="POST" id="registerForm" class="cssform" autocomplete="off">
            <h2 class="form-signin-heading">Please register</h2>

            <label for="username" class="sr-only">Username</label>
            <input style="margin-bottom: 10px" type="text" id="username" class="form-control" placeholder="Username" name="${usernameParameter ?: 'j_username'}"/>

            <label for="email" class="sr-only">Email</label>
            <input style="margin-bottom: 10px" type="email" id="email" class="form-control" placeholder="Email" name="${emailParameter ?: 'email'}"/>

            <label for="fName" class="sr-only">First Name</label>
            <input style="margin-bottom: 10px" type="text" id="FName" class="form-control" placeholder="First Name" name="${fNameParameter ?: 'fName'}"/>

            <label for="lName" class="sr-only">Last Name</label>
            <input style="margin-bottom: 10px" type="text" id="lName" class="form-control" placeholder="Last Name" name="${lNameParameter ?: 'lName'}"/>

            <label for="password" class="sr-only">Password</label>
            <input style="margin-bottom: 10px" type="password" id="password" class="form-control" placeholder="Password" name="${passwordParameter ?: 'j_password'}"/>

            <label for="confirmPassword" class="sr-only">Confirm Password</label>
            <input style="margin-bottom: 10px" type="password" id="confirmPassword" class="form-control" placeholder="Confirm Password" name="${passwordCParameter ?: 'confirmPassword'}"/>

            <g:actionSubmit style="margin-top: 20px" class="btn btn-lg btn-success btn-block" action="register" value="create"/>
            <button style="margin-top: 20px" class="btn btn-lg btn-success btn-block" type="submit">Register</button>
        </form>
    </div>
</body>
这也是loginService的代码:

com.mypackage
//imports
@Transactional
class LoginService {
    def register(newUser){
        try{
            def userRole = new Role(authority: 'ROLE_USER', name: 'User').save(flush: true)
            newUser.save(flush: true, failOnError: true)
            UserRole.create(newUser, userRole, true)

            return true

        }catch(all){
            all.printStackTrace()
            return false
        }
    }
}
很抱歉,如果所有代码没有正确缩进,我基本上是从实际项目中复制并粘贴的。任何帮助都将不胜感激,谢谢

  • 您可以使用SpringSecurityUI插件
  • 使用命令对象验证密码
  • 使用资源,这意味着向/user发送帖子,这将调用save操作
com.mypackage
//imports
@Transactional
class LoginService {
    def register(newUser){
        try{
            def userRole = new Role(authority: 'ROLE_USER', name: 'User').save(flush: true)
            newUser.save(flush: true, failOnError: true)
            UserRole.create(newUser, userRole, true)

            return true

        }catch(all){
            all.printStackTrace()
            return false
        }
    }
}