Grails,spring security我想注册新用户,无需电子邮件确认
由管理员进行注册,不需要/不需要电子邮件确认 我使用了overide脚本,但它只是创建了一个空的控制器,我不知道如何使用它。 看起来是这样的: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
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&重新运行并查看它是否已填充