Grails,spring security我想注册新用户,无需电子邮件确认

Grails,spring security我想注册新用户,无需电子邮件确认,spring,authentication,grails,Spring,Authentication,Grails,由管理员进行注册,不需要/不需要电子邮件确认 我使用了overide脚本,但它只是创建了一个空的控制器,我不知道如何使用它。 看起来是这样的: package com.myProj.security class RegisterController extends grails.plugin.springsecurity.ui.RegisterController { } 运行该命令也会给出以下答案: | Copying register resources | Rendered templ

由管理员进行注册,不需要/不需要电子邮件确认

我使用了overide脚本,但它只是创建了一个空的控制器,我不知道如何使用它。 看起来是这样的:

package com.myProj.security

class RegisterController extends grails.plugin.springsecurity.ui.RegisterController {
}
运行该命令也会给出以下答案:

| Copying register resources
| Rendered template RegisterController.groovy.template to destination grails-app\controllers\com\testx\ui\RegisterController.groovy
| Error Command [s2ui-override] error: class path resource [layouts/register.gsp] cannot be opened because it does not exist (Use --stacktrace to see the full trace)
java.io.FileNotFoundException: class path resource [layouts/register.gsp] cannot be opened because it does not exist
        at org.grails.io.support.ClassPathResource.getInputStream(ClassPathResource.java:148)
        at org.grails.io.support.SpringIOUtils.copy(SpringIOUtils.java:196)
        at org.grails.cli.profile.commands.io.FileSystemInteractionImpl.copy(FileSystemInteractionImpl.groovy:144)
        at org.grails.cli.profile.commands.io.FileSystemInteractionImpl.copy(FileSystemInteractionImpl.groovy)
        at org.grails.cli.profile.commands.script.GroovyScriptCommand.copy(GroovyScriptCommand.groovy:58)
        at org.grails.cli.profile.commands.io.FileSystemInteraction$copy$2.callCurrent(Unknown Source)
        at s2ui-override.copy(s2ui-override.groovy:113)
        at s2ui-override.run(s2ui-override.groovy:108)
        at org.grails.cli.profile.commands.script.GroovyScriptCommand.handle(GroovyScriptCommand.groovy:152)
        at org.grails.cli.profile.AbstractProfile.handleCommand(AbstractProfile.groovy:481)
        at org.grails.cli.GrailsCli.handleCommand(GrailsCli.groovy:377)
        at org.grails.cli.GrailsCli.handleCommand(GrailsCli.groovy:350)
        at org.grails.cli.GrailsCli.execute(GrailsCli.groovy:271)
        at org.grails.cli.GrailsCli.main(GrailsCli.groovy:159)
你知道怎么做吗?这些手册对我没有帮助。也许我错过了什么

==============================================

我在GitHub上找到了一些代码,从RegisterController复制了一些行,并将其添加到几乎为空的RegisterController中

package com.myProj.security
import grails.plugin.springsecurity.authentication.dao.NullSaltSource
import grails.plugin.springsecurity.ui.strategy.MailStrategy
import grails.plugin.springsecurity.ui.strategy.PropertiesStrategy
import grails.plugin.springsecurity.ui.strategy.RegistrationCodeStrategy
import groovy.text.SimpleTemplateEngine
import org.springframework.security.authentication.dao.SaltSource
import grails.plugin.springsecurity.annotation.Secured

class RegisterController extends grails.plugin.springsecurity.ui.RegisterController {
    def register(RegisterCommand registerCommand) {

        if (!request.post) {
            return [registerCommand: new RegisterCommand()]
        }

        if (registerCommand.hasErrors()) {
            return [registerCommand: registerCommand]
        }

        def user = uiRegistrationCodeStrategy.createUser(registerCommand)
        String salt = saltSource instanceof NullSaltSource ? null : registerCommand.username
        RegistrationCode registrationCode = uiRegistrationCodeStrategy.register(user, registerCommand.password, salt)

        if (registrationCode == null || registrationCode.hasErrors()) {
            // null means problem creating the user
            flash.error = message(code: 'spring.security.ui.register.miscError')
            return [registerCommand: registerCommand]
        }

        user = uiRegistrationCodeStrategy.finishRegistration(registrationCode)

        if (!user) {
            flash.error = message(code: 'spring.security.ui.register.badCode')
            redirect uri: successHandlerDefaultTargetUrl
            return
        }

        if (user.hasErrors()) {
            // expected to be handled already by ErrorsStrategy.handleValidationErrors
            return
        }

        flash.message = message(code: 'spring.security.ui.register.complete')
        redirect uri: registerPostRegisterUrl ?: successHandlerDefaultTargetUrl
    }
}

毫无疑问,它不起作用,但我想知道作者希望我如何使它起作用。导入看起来不可访问,因此代码无法编译。即使可以,我如何确保调用此控制器?

您使用的是spring security UI吗?还是仅仅是核心的spring安全性?就我个人而言,我不使用SpringSecurityUI&只是有一个简单的手写控制器&gsp,它接受用户名等,并将工作转交给ldapUserDetailsManager,如果需要,我可以展示给beYes,我会的。在运行s2ui覆盖脚本时,还有很多事情无法按预期工作。我唯一能得到的gsp是auth.gsp。您是否运行了
Grails2UI覆盖寄存器
?根据linked docWell第5.4节,应“将注册控制器和gsp复制到要定制的应用程序中”,如果您查看问题中显示的命令“s2ui override register”的错误消息,您可以看到它声称找不到该文件(layouts/register.gsp).Hmmm,可能会删除RegisterController并使用
--stacktrace
重试,我不确定创建register.gsp后您在register.gsp中会得到多少,它可能是空的,您甚至可以创建/templates/register.gsp&重新运行并查看它是否已填充