Grails, Vaadin и Spring Security Plugin вместе

У меня есть Grails, работающие с основными плагинами безопасности vaadin и spring, но я не могу объединить их три. Если я перехожу на страницу, где я использую @Secured, она работает так, как должна. Но если я поставлю @Secured в свой класс приложения vaadin, это ничего не сделает. Что я хочу сделать, так это защитить все приложение vaadin, а затем защитить некоторые вещи в этом приложении для ролей с более высоким уровнем полномочий. Что я здесь делаю неправильно? Если бы кто-нибудь мог указать мне правильное направление, это было бы здорово. Спасибо!


person Jay Elrod    schedule 13.08.2012    source источник


Ответы (3)


Взгляните на эту публикацию. - он помещает защищаемые методы в сервисный класс Grails, где работают аннотации, и вызывает сервисные методы из приложения vaadin.

(Имейте в виду, что в приложениях vaadin не рекомендуется полагаться на внедрение зависимостей, см. getBean(String beanName) getBean(Class beanType) в документация по плагину

person thomers    schedule 16.08.2012

Вы пытались настроить сопоставление URL-адресов в Config.groovy?

Аннотацию @Secured следует использовать в классах контроллеров Grails.

person marko    schedule 13.08.2012

Вам необходимо использовать службы Grails в приложении Vaadin. Используя плагин Vaadin, объявите свой сервис в пользовательском интерфейсе или любом компоненте Vaadin, например:

import com.vaadin.grails.Grails
import com.company.app.SecurityService

class <YourComponent> extends CustomComponent implements View {

def securityService = Grails.get(SecurityService)
...
<use securityService in your component's methods>

}

В вашей службе grails с именем «securityService» подключите springSecurityService и используйте аннотации или что-либо, предоставленное плагином spring-security grails. Более того, благодаря совершенству Grails, сервисы уже являются транзакционными.

@Transactional
class SecurityService {

    def springSecurityService

    def signOut() {
        SCH.context.authentication = null
    }

    boolean isSignedIn() {
        return springSecurityService.isLoggedIn()
    }

    User getCurrentUser() {
        return springSecurityService.currentUser
    }

... Или что касается безопасности.

person ludo_rj    schedule 26.12.2013