2012-08-27 231 views
2

我無法使用spring security和dynamodb將我的用戶登錄到grails應用程序中。使用dynamodb的Grails彈簧安全性

Grails爲2.1,安裝的插件爲spring-security core和dynamodb latest。

用戶和角色由s2-quickstart創建,其唯一修改是向用戶,角色和userrole類添加字符串id和靜態mapWith =「dynamodb」(由於dynamodb上的id是UUID,因此需要String id)

Bootstrap是按照春季安全教程。

應用程序啓動正常,並創建了dynamodb表和行。

我不斷收到

驗證失敗:密碼不被洛在LoginController中(我沒有設置從教程中的樣本控制器)與存儲值

。有任何想法嗎?

回答

0

如果你配置了更多的數據源,那麼我已經使用過mapUp,因爲beforeUpdate塊會被調用多次。 (每個數據源一次)我將以下內容添加到我的用戶域對象,並且它可以正常工作。

transient hasBeforeInsert = false 
transient hasBeforeUpdate = false 

... 

    def beforeInsert() 
    { 
    if(!hasBeforeInsert) 
    { 
     hasBeforeInsert = true 
     encodePassword() 
    } 
    } 

    def beforeUpdate() 
    { 
    if(!hasBeforeUpdate) 
    { 
     hasBeforeUpdate = true 

     if(isDirty('password')) 
     { 
     encodePassword() 
     } 
    }