Ich habe komplett neue Grails-Projekt erstellt und dann Grails s2-quickstart Befehl verwendet, um LoginController und User/UserRole Klassen zu erhalten. Alles funktioniert gut, ich habe eine Login-Seite. Dann habe ich den Benutzer-Controller in GTS erstellt, indem ich "Controller und Ansichten generieren" gewählt habe. Der erzeugte Usercontroller sieht wie folgt aus:Grails einfache Registrierung/Login-Formular
import static org.springframework.http.HttpStatus.*
import grails.transaction.Transactional
@Transactional(readOnly = true)
class UserController {
static allowedMethods = [save: "POST", update: "PUT", delete: "DELETE"]
def index(Integer max) {
params.max = Math.min(max ?: 10, 100)
respond User.list(params), model:[userInstanceCount: User.count()]
}
def show(User userInstance) {
respond userInstance
}
def create() {
respond new User(params)
}
@Transactional
def save(User userInstance) {
if (userInstance == null) {
notFound()
return
}
if (userInstance.hasErrors()) {
respond userInstance.errors, view:'create'
return
}
userInstance.save flush:true
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.created.message', args: [message(code: 'user.label', default: 'User'), userInstance.id])
redirect userInstance
}
'*' { respond userInstance, [status: CREATED] }
}
}
def edit(User userInstance) {
respond userInstance
}
@Transactional
def update(User userInstance) {
if (userInstance == null) {
notFound()
return
}
if (userInstance.hasErrors()) {
respond userInstance.errors, view:'edit'
return
}
userInstance.save flush:true
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.updated.message', args: [message(code: 'User.label', default: 'User'), userInstance.id])
redirect userInstance
}
'*'{ respond userInstance, [status: OK] }
}
}
@Transactional
def delete(User userInstance) {
if (userInstance == null) {
notFound()
return
}
userInstance.delete flush:true
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.deleted.message', args: [message(code: 'User.label', default: 'User'), userInstance.id])
redirect action:"index", method:"GET"
}
'*'{ render status: NO_CONTENT }
}
}
protected void notFound() {
request.withFormat {
form multipartForm {
flash.message = message(code: 'default.not.found.message', args: [message(code: 'user.label', default: 'User'), params.id])
redirect action: "index", method: "GET"
}
'*'{ render status: NOT_FOUND }
}
}
}
Nun, wenn ich/user/Indexseite hinwollen er leitet mich zur Login-Seite ... Wie das ändern? Grails bin ich ganz neu, es tut mir leid, wenn diese Frage trivial ist.
Ok, aber ich möchte diese Usercontroller für jedermann zugänglich werden, nicht angemeldeter Benutzer, die keine Rolle spielt. Sollte ich ROLE_ANONYMOUS hinzufügen? – user2455862
Fügen Sie es zu Ihren statischen Regeln hinzu und folgen Sie den bestehenden Regeln permitAll @ user2455862 in Ihrer Anwendung.groovy – Vahid