【问题标题】:ServiceStack OrmLiteAuthRepository.UpdateUserAuth with null passwordServiceStack OrmLiteAuthRepository.UpdateUserAuth 密码为空
【发布时间】:2014-07-23 23:44:21
【问题描述】:

我不确定这是否是一个问题,或者只是我不知道 OrmLiteAuthRepository 应该如何工作的问题。我正在尝试制作一个允许管理员更新用户信息的管理屏幕。我正在使用 OrmLiteAuthRepository.UpdateUserAuth 方法并传入一个空密码来更新除密码之外的所有内容。但是,验证就像我正在创建一个新用户一样运行,并且 ValidateNewUser 要求我有一个不为空的密码,即使在方法中进一步检查以避免在使用空密码时更新密码。我错过了什么?

这里是方法调用的链接

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

【问题讨论】:

  • 如果您有自己的验证并确保您的用户名或电子邮件未更新为已被使用的用户名或电子邮件,@Gavin Faux 是正确的,您可以使用 SaveUserAuth。但是,为了保持 api 干净,我克隆了项目,并将提交给 SS 进行审查。

标签: servicestack ormlite-servicestack


【解决方案1】:

使用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);

【讨论】:

  • SaveUserAuth 不会通过 UpdateUserAuth 运行的所有验证。 SaveUserAuth 可以让您使用现有的用户名或电子邮件更新帐户。 UpdateUserAuth 检查类似情况并抛出异常。
  • 没有想到那个特定的用例,所以我猜需要一个拉取请求来实现。或者不允许在您的管理 UI 中更改用户名。
猜你喜欢
  • 2013-03-20
  • 2021-05-30
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
相关资源
最近更新 更多