2013-09-10 24 views
2

我不知道這是一個問題,或只是一個問題,我不知道OrmLiteAuthRepository應該如何工作。我正在設置一個管理員屏幕,允許管理員更新用戶信息。我正在使用OrmLiteAuthRepository.UpdateUserAuth方法並傳遞一個空密碼來更新除密碼之外的所有內容。然而,驗證運行就好像我正在創建一個新用戶一樣,ValidateNewUser要求我有一個不爲空的密碼,即使在方法中還有一些檢查以避免在使用空密碼時更新密碼。我錯過了什麼?ServiceStack OrmLiteAuthRepository.UpdateUserAuth與空密碼

這裏是一個方法調用

https://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack.ServiceInterface/Auth/OrmLiteAuthRepository.cs#L105

+0

如果你有地方自己的驗證,並確保您的用戶名或電子郵件不會被更新到已採取的一個,@Gavin仿是正確的,你可以只使用SaveUserAuth。然而,爲了保持api清潔,我克隆了這個項目,並將轉入SS進行審查。 – Dan

回答

3

使用SaveUserAuth一個鏈接,我相信UpdateUserAuth是更新密碼,但可能是錯誤的。

UserAuth user = this.AuthRepository.GetUserAuth("bob") 
if (user.Meta == null) 
{ 
    user.Meta = new Dictionary<string, string>(); 
} 
user.Meta.Add("message", "hi bob"); 
this.AuthRepository.SaveUserAuth(user); 
+0

SaveUserAuth不會運行UpdateUserAuth運行的所有驗證。 SaveUserAuth將允許您使用現有用戶名或電子郵件更新帳戶。 UpdateUserAuth檢查這樣的事情並引發異常。 – Dan

+0

沒有想到這個特定的用例,所以需要一個pull request來實現我的猜測。或者不允許在管理界面中更改用戶名。 –