servicestack,Authentication,servicestack" /> servicestack,Authentication,servicestack" />

Authentication ServiceStack授权:允许重复发送电子邮件

Authentication ServiceStack授权:允许重复发送电子邮件,authentication,servicestack,Authentication,servicestack,我们正在使用SS4,并希望将其设置为不强制执行唯一电子邮件(我们有一些客户要求能够为不同的用户重复电子邮件) Demis提到它是可配置的,但是快速浏览一下代码并不能揭示如何放松每个帐户都有一个唯一电子邮件的要求 看来我们需要搞乱注册验证器了 SS代码中是否有一个示例显示更改帐户注册的验证规则以允许使用重复的电子邮件地址?您可以在注册AuthFeature插件时对其进行配置: Plugins.Add(new AuthFeature(...) { ValidateUniqueEmails =

我们正在使用SS4,并希望将其设置为不强制执行唯一电子邮件(我们有一些客户要求能够为不同的用户重复电子邮件)

Demis提到它是可配置的,但是快速浏览一下代码并不能揭示如何放松每个帐户都有一个唯一电子邮件的要求

看来我们需要搞乱注册验证器了


SS代码中是否有一个示例显示更改帐户注册的验证规则以允许使用重复的电子邮件地址?

您可以在注册
AuthFeature
插件时对其进行配置:

Plugins.Add(new AuthFeature(...) {
    ValidateUniqueEmails = false
});

您可以在注册
AuthFeature
插件时对其进行配置:

Plugins.Add(new AuthFeature(...) {
    ValidateUniqueEmails = false
});

SS3.x中的简单解决方案,我假设它将在SS4.x中工作

AssertNoExistingUser()检查电子邮件的唯一性,即使您试图将用户名用作凭据上的用户名而不是电子邮件上的用户名。 简单的解决方法是使用空电子邮件地址(和有效用户名)创建用户。 保存用户后,您可以将电子邮件应用回该用户并调用AuthRepo.PatchUserAuth(userAuth)


它将节省,而且您不会有任何问题。

SS3.x中的简单解决方案,我假设它将在SS4.x中工作

AssertNoExistingUser()检查电子邮件的唯一性,即使您试图将用户名用作凭据上的用户名而不是电子邮件上的用户名。 简单的解决方法是使用空电子邮件地址(和有效用户名)创建用户。 保存用户后,您可以将电子邮件应用回该用户并调用AuthRepo.PatchUserAuth(userAuth)


这样可以省钱,你也不会有任何问题。

我一定是做错了什么。我仍然得到错误这里是代码的要点。我在看OrmLiteAuthRepository的CreateUserAuth()方法,它似乎无条件地调用AssertNoExistingUser(),无条件地检查唯一的电子邮件。ValidateUniqueEmails似乎没有参与其中。我误解了吗@gizmoboy是的,如果这是针对凭据(即用户名/密码)提供商的,其中电子邮件是用户名,则需要唯一。ValidateUniqueEmails允许AuthProviders通过现有电子邮件地址。因此,如果不重写AuthRepo,就不可能创建具有重复电子邮件的用户?这就是我们在3.x中所做的,但我希望4.x能让我们消除一些自定义代码。当它们被用作用户名时,UserAuth上有一个属性可以用来存储重复的电子邮件地址。我一定是做错了什么。我仍然得到错误这里是代码的要点。我在看OrmLiteAuthRepository的CreateUserAuth()方法,它似乎无条件地调用AssertNoExistingUser(),无条件地检查唯一的电子邮件。ValidateUniqueEmails似乎没有参与其中。我误解了吗@gizmoboy是的,如果这是针对凭据(即用户名/密码)提供商的,其中电子邮件是用户名,则需要唯一。ValidateUniqueEmails允许AuthProviders通过现有电子邮件地址。因此,如果不重写AuthRepo,就不可能创建具有重复电子邮件的用户?这就是我们在3.x中所做的,但我希望4.x能让我们消除一些自定义代码。当它们被用作用户名时,UserAuth上有一个属性可用于存储重复的电子邮件地址。好的,下面总结一下@mythz的答案:将电子邮件留空,并使用PrimaryEmail作为电子邮件属性,SS4将允许你复制所有你喜欢的电子邮件。但是,如果您在电子邮件中输入一个值,那么它必须是唯一的。好吧,下面总结一下@mythz的答案:将电子邮件留空,并使用PrimaryEmail作为您的电子邮件属性,SS4将允许您复制所有您喜欢的电子邮件。但是,如果在电子邮件中输入值,则该值必须是唯一的。