2013-11-15 10 views
7

Używam nowej wtyczki Grails Spring Security Core 2.0 i zastanawiam się, w jaki sposób mogę dostosować widok logowania i LoginController/LogoutController?Jak dostosować kontroler logowania i wylogowania Grails Spring Security Core 2 i widoki?

Poprzednie wersje wtyczki wygenerowały te pliki, ale teraz wydaje się, że muszę je skopiować z wtyczki do mojego projektu. Czy to jest właściwe podejście?

A jeśli tak, czy mogę umieścić skopiowane kontrolery i widoki w innym pakiecie, a następnie oryginalnym. IntelliJ wydaje się nie lubić posiadania tych samych artefaktów w tym samym pakiecie.

+0

Czy to była praca dla Ciebie? Skopiowałem 'LogoutController.groovy' do' controllers \ grails \ plugin \ springsecurity \ LogoutController.groovy', ale wprowadzone zmiany nie są pobierane. Myślę, że nadal używa kontrolera wtyczek. – Guus

Odpowiedz

5

Domyślnie w wersji 2.0 wylogowanie dozwolone jest tylko przez żądania POST. Aby to zmienić, aby umożliwić żądanie GET, dodaj następujące elementy do pliku Config.groovy.

grails.plugin.springsecurity.logout.postOnly = false 

Gdy masz ten zestaw można połączyć bezpośrednio do wylogowania kontrolera w celu wylogowania

<g:link controller="logout">logout</g:link> 

Jeśli chcesz znaleźć więcej informacji na temat tego, co jeszcze zostało zmienione w wersji 2 wyglądzie do dokumentacji What's New in Version 2.0

2

Inną opcją byłoby użyć remote link który domyślnie używa „post” metodę

<g:remoteLink class="logout" controller="logout">${message(code: 'springSecurity.logout.link')}</g:remoteLink> 
+0

Czy nie musiałbyś ustawić atrybutu 'asynchronicznego' na' false', aby rzeczywiście zmienić łącze bieżącej lokalizacji przeglądarki? –

1

Nie sądzę, że żadna z powyższych odpowiedzi rzeczywiście odpowiada na pytanie.

Jeśli chcesz zastąpić kontrolery i widoki w aplikacji internetowej, skopiuj je do swojej aplikacji internetowej. Możesz nawet nadać im inną hierarchię pakietów, jeśli chcesz, aby wtyczka Spring-Security-core odniosła się do nich po adresie URL, a Twój mógłby je zastąpić.

Działa to, ponieważ kontrolery i widoki zadeklarowane w głównej aplikacji internetowej mają pierwszeństwo przed tymi, które znajdują się w wtyczkach.

Jednakże, jeśli robisz to w innej wtyczce, kiedy sytuacja staje się nieco trudna. See this questiona and answer for a solution to that problem

+0

Dzięki za dodanie tej odpowiedzi !! –

Powiązane problemy