2013-09-10 23 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来实现我的猜测。或者不允许在管理界面中更改用户名。 –