2013-12-15 29 views
0

我一直在試圖將spring-security集成到我的一個grails應用程序中。正如在教程春季安全提到的,我用下面的代碼錯誤在grails中使用spring-security插件

BuildConfig.groovy安裝該插件: 添加以下代碼

repositories { 
mavenRepo 'http://repo.spring.io/milestone' 
} 

plugins { 
compile ':spring-security-core:2.0-RC2' 
} 

後來我打掃代碼和編譯,以確保下載依賴關係。我還檢查了.grails文件夾以確保下載依賴關係。

接下來我創建了用戶和角色類。 (注:我已分別命名爲Person和Authority)。

之後,我創建了SecureController並沒有添加任何安全訪問註釋,但仍無法訪問安全控制器。該控件直接重定向到登錄控制器

問題1: 是否使用spring security插件後,每個頁面都需要驗證。有沒有辦法訪問一個頁面而無需登錄

接下來我將@Secured註釋添加到SecureController。雖然@Secured註釋出現在項目的插件文件夾中,但它根本不會被檢測到。起初我以爲我錯過了一些東西,所以我從開始實施相同的步驟再次創建了這個項目。但是這一次的插件被檢測

問題2: 爲什麼彈簧安全插件表現得如此不一致

我試圖訪問SecureController無需登錄,我碰到下面的錯誤。

EL1008E:(POS 0):字段或屬性「ADMIN_ROLE」不能在種類型的目標被發現「org.springframework.security.web.access.expression.WebSecurityExpressionRoot」

我還獲得之後的相同的錯誤登錄並嘗試訪問控制器。

問題3: 是我錯過了任何需要指定的依賴關係。

在登錄頁面中,表單會導致一些操作'j_security_check'。我沒有注意到任何控制器中的這個動作。

問題4: 我需要以創建一個新動作用這個名字

請幫我整理出這個isssue。非常感謝您的幫助。

+0

每個問題一個問題:) –

+0

嗨,伯特,你能告訴我爲什麼我得到WebSecurityExpressionRoot錯誤。 – Rammohan

+0

@Rammohan這是另一個問題(請打開新的),你需要提供日誌信息,我們可以幫助你。 –

回答

0

安裝完插件後,需要運行s2-quickstart才能獲得基本配置。

如果你想重命名默認類,你需要在Config中指定Spring Security它。groovy文件:

grails.plugins.springsecurity.userLookup.userDomainClassName = 'sys.Usuario' 
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'sys.UsuarioRol' 
grails.plugins.springsecurity.authority.className = 'sys.Rol' 
// This last two lines if you're using Requestmap Instances method for protect your resources 
grails.plugins.springsecurity.requestMap.className = 'sys.Requestmap' 
grails.plugins.springsecurity.securityConfigType = 'Requestmap' 

下面這行,是爲拒絕所有請求,如果不存在這個資源的規則。

grails.plugins.springsecurity.rejectIfNoRule = true 

正如你可以在documentation中看到的那樣。你有4種不同的形式來保護你的資源。

  1. 擔保批註
  2. 簡易地圖Config.groovy中
  3. Requestmap實例在數據庫
  4. 使用表達式創建描述性存儲,細粒度規則

我Burth同意,請問每個問題一個問題。