2014-07-25 44 views
0

我需要將Spring Security核心添加到Grails。 我已經加入了彈簧芯安全插件,以一個Grails應用程序2.3.8, 使用:BuildConfig.groovy 插件{ ... 纂「:春季安全核心:2.0 RC4」 ...Groovy:使用Grails和Spring安全核心插件時的意外令牌

然後 S2-SIM快速入門GUser GRole

文件GUserGRole.groovy包含以下錯誤:

Groovy的:意外的標記:驗證@行82,列在該行多個標記 - 的Groovy :EXPEC廷EOF,發現 '如果' @線83, 塔4 - Groovy:在意外的標記:如果@線83, 塔4

,其對應於以下代碼:

static constraints = { 
    GRole validator: { GRole r, GUserGRole ur -> 
     if (ur.GUser == null) return 
     boolean existing = false 
     GUserGRole.withNewSession { 
      existing = GUserGRole.exists(ur.GUser.id, r.id) 
     } 
     if (existing) { 
      return 'userRole.exists' 
     } 
    } 
} 

如何這可以解決?我如何可以乾淨地將Spring Security核心添加到Grails中?

+0

這段代碼對我來說並沒有什麼意義。你究竟想用這個完成什麼? – rmlan

+0

在安裝安全插件後運行快速入門時,顯示的代碼會自動創建。 –

+0

與Grails 2.4.4和spring-security-core相同的問題:使用IDEA的2.0-RC3/RC4 14. – bel

回答

0

一個問題是GRole validatorvalidator之前的內容應該是被約束的屬性的名稱,而不是類型。如果該物業被稱爲gRole那麼代碼應該是gRole validator。該物業真的叫GRole?如果是的話,這可能會有問題。

+0

安裝spring安全插件後,我運行快速啓動來初始化插件。 GRole與GUser一起被創建爲GUserGRole中的屬性名稱。我的印象是,在Grails 2中,安裝Spring Security Core插件非常簡單。 –

1

s2quick-start使用GrailsNameUtils.getPropertyNameRepresentation來爲您的域類生成實例字段。使用一個名稱將生成一個合適的字段名稱,否則字段名稱和類名稱是相同的。

//This is fine - generates 'user' 
GrailsNameUtils.getPropertyNameRepresentation("User") 

//This is fine - generates 'myUser' 
GrailsNameUtils.getPropertyNameRepresentation("MyUser") 

//Not fine. Generates 'GRole' which is same as your class name 
GrailsNameUtils.getPropertyNameRepresentation("GRole") 
0

請檢查這裏的討論Groovy: Unexpected token ":"

由於代碼是自動生成的,因此您應該手動更正類變量的名稱,並將其更改爲「GRole GRole」爲「GRole gRole」。

相關問題