2015-02-17 33 views
0

我们正在使用SS4并希望对其进行设置,以便不强制执行唯一电子邮件(我们有一些客户需要为不同用户重复发送电子邮件)。ServiceStack授权:允许重复发送电子邮件

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

看起来也许我们需要乱用RegistrationValidator?

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

+0

好的,以下总结@mythz的答案:将电子邮件留空并使用PrimaryEmail作为您的电子邮件媒体资源,SS4将允许您复制所有您喜欢的电子邮件。但是,如果你在Email中添加一个值,它必须是唯一的._ – gizmoboy 2015-02-19 16:32:49

回答

4

您可以在您注册的AuthFeature插件与配置它:

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

我一定在做错事。我仍然收到错误这是代码的要点。 [链接](https://gist.github.com/anonymous/896f8ae6b69df3c15062) – gizmoboy 2015-02-18 22:56:45

+0

我正在查看OrmLiteAuthRepository的CreateUserAuth()方法,它看起来像无条件地调用AssertNoExistingUser(),它无条件地检查唯一的电子邮件。 ValidateUniqueEmails似乎没有进入它。我误读了吗? [链接](https://github.com/ServiceStack/ServiceStack/blob/f3362880beead295a0b3d4d51455b3f514417b73/src/ServiceStack.Server/Auth/OrmLiteAuthRepository.cs) – gizmoboy 2015-02-18 23:30:05

+0

@gizmoboy是的,如果这是为凭证(即用户名/密码)提供商电子邮件是用户名,比那需要是唯一的。 ValidateUniqueEmails允许通过现有电子邮件地址的AuthProviders。 – mythz 2015-02-19 01:50:11

0
在SS 3.X

简单的解决方案,我认为将在SS 4.x的

AssertNoExistingUser()检查工作电子邮件即使您尝试使用用户名作为凭证上的用户名而不是电子邮件,也是如此。 简单的解决方法是创建一个空电子邮件地址(和一个有效的用户名)的用户。 一旦用户被保存,您可以将电子邮件应用回用户并呼叫AuthRepo.PatchUserAuth(userAuth)

它会保存并且您不会有任何问题。

相关问题