Использование подключаемого модуля безопасности пружины Grails (3.2.3) У меня есть приложение со стандартными классами доменов, которые создаются с использованием этого руководства:
https://grails -plugins.github.io / grails-spring-security-core / 3.2.x / index.html # tutorials
В этом руководстве указаны следующие классы:
Role.groovy, UserRole.groovy & User.groovy.
User.groovy также добавил следующий код:
static belongsTo = [store: Store]
Я также добавил еще два класса домена:
Store.groovy:
package com.mycompany.myapp
class Store {
String name
static constraints = {
}
}
BookShop.groovy:
package com.mycompany.myapp
class BookShop extends Store {
Boolean isOpen
static constraints = {
}
}
Я создал пользователя в Bootstrap.groovy:
def init = {
def adminRole = new Role(authority: 'ROLE_ADMIN').save()
def testBookShop = new BookShop(name: "BookShop", isOpen: true).save()
def testUser = new User(username: 'me', password: 'password', store: testBookShop).save()
UserRole.create testUser, adminRole
UserRole.withSession {
it.flush()
it.clear()
}
assert User.count() == 1
assert Role.count() == 1
assert UserRole.count() == 1
}
Я внедряю свою весеннюю службу безопасности в мой SecureController.groovy и пробуюсделать следующее:
package com.mycompany.myapp
import grails.plugin.springsecurity.annotation.Secured
class SecureController {
def springSecurityService
@Secured('ROLE_ADMIN')
def index() {
def currentUser = springSecurityService.currentUser
render 'Store: ' + currentUser.store.name + ' is open = ' + currentUser.store.isOpen
}
}
Я получаю следующую ошибку:
2018-09-10 20:34:26.068 ERROR --- [nio-8080-exec-2]
o.g.web.errors.GrailsExceptionResolver : MissingPropertyException
occurred when processing request: [GET] /secure/index
No such property: isOpen for class: com.mycompany.myapp.BookShop
Я могу заставить это работать, если специально разверну магазин:
render 'Store: ' + currentUser.store.name + ' is open = ' +
GrailsHibernateUtil.unwrapIfProxy(currentUser.store).isOpen
Мне просто интересно, есть ли какие-нибудь лучшие решения для такой сортировки, я обновляю большое приложение с версий 2.5.5 до 3.3.8, это работало в 2.5.5, и мне нужно будет изменить много кода, используяметод выше, так что надеемся на быстрое решение, спасибо.