我在工作中使用的應用程序使用Grails 3.我正在嘗試執行預驗證,如article中所述,但由於我無法弄清楚如何禁用常規認證由grails 3 spring security plugin提供。Grails 3 Spring Security預先驗證
這是我目前的情況:用戶A打我的網頁。我想分析請求的標題並取出角色和用戶名信息。如果用戶名或角色爲空,我會將用戶重定向到某個網關。簡而言之,我只想通過調用插件提供的靜態規則來使用spring安全進行授權。即
grails.plugin.springsecurity.controllerAnnotations.staticRules = [
[pattern: '/serviceb/**', access: "hasAnyRole('ROLE_COOL','ROLE_UNCOOL')"],
[pattern: '/cools/**', access: ['ROLE_ADMINS']],
[pattern: '/*', access: 'isAuthenticated()']
]
這是我不需要春季安全做任何登錄功能的原因,作爲first article狀態,我們可以使用它的唯一的身份驗證。
我曾嘗試:
首先,我刪除了我的application.groovy文件中的所有身份驗證有關的呼叫(運行快速啓動該插件時,默認創建的),即連接字符串,搜索過濾器,但不靜態規則
接下來,我試圖用這兩個職位提供瞭解決方案:on stack這on blog。
我創建了一個過濾器,以延長AbstractPreAuthenticatedProcessingFilter
package Cool.service.authentication
import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter
import javax.servlet.http.HttpServletRequest
class CGAuthenticationFilter extends AbstractPreAuthenticatedProcessingFilter {
@Override
protected Object getPreAuthenticatedPrincipal(HttpServletRequest request) { "username" }
@Override
protected Object getPreAuthenticatedCredentials(HttpServletRequest request) { "N/A" }
}
我的引導配置現在看起來是這樣的:
import grails.plugin.springsecurity.SecurityFilterPosition
import grails.plugin.springsecurity.SpringSecurityUtils
class BootStrap {
def init = { servletContext ->
SpringSecurityUtils.clientRegisterFilter('CGAuthenticationFilter', SecurityFilterPosition.PRE_AUTH_FILTER.order)
}
}
我的溫泉資源是這樣的:
import Cool.service.authentication.CGAuthenticationFilter
beans = {
myAuthenticationFilter(CGAuthenticationFilter) {
authenticationManager = ref('authenticationManager')
checkForPrincipalChanges = true
}
}
而且最後,將這一行添加到我的application.groovy配置中,用於spring securit Ÿ插件:
grails.plugin.springsecurity.providerNames = ['preAuthenticatedAuthenticationProvider', 'anonymousAuthenticationProvider']
不過,我試圖運行的應用程序,其中,服務器「失敗」來啓動和java返回一個非零值,回來的時候得到一個超級geneirc錯誤。這讓我相信我的方向是錯誤的,並且執行完全是錯誤的
爲什麼要禁用Spring安全?你有什麼嘗試?請通過某種需要實現的用例場景。 –
@MikelisBaltruks好吧,我已經添加了更多細節。我不想禁用彈簧安全功能,只能禁用登錄功能。標題將包含我需要的信息。用例場景從第二段開始 – angryip