允许电子邮件邀请进行用户注册

时间:2013-07-29 09:31:35

标签: .net asp.net-mvc email orchardcms orchardcms-1.6

有没有人通过电子邮件通过邀请链接探索允许用户在Orchard注册?我希望我的管理员有一个表格,他们可以输入一个电子邮件地址并向这些人发送注册邀请。

1 个答案:

答案 0 :(得分:1)

我已经实现了非常类似的东西。大多数硬盘已经内置在Orchard中,只是利用已有的东西。

  1. 创建新用户,使用他们的电子邮件地址作为用户名(仅用作占位符)和随机密码。他们的注册状态应设置为“待定”,以防止他们登录,直到他们完成邀请过程。 **

  2. 在发送电子邮件时,请使用IUserService.CreateNonce(...)方法为新用户创建唯一令牌。使用此随机数创建一个URL,例如〜/ invite / {nonce},将其插入您的电子邮件并通过IMessageManager.Send(...)发送出去(我们实际上会触发一条规则来执行此操作 - 它允许同时触发其他内容并且也是一种hacky方式允许使用令牌自定义外发电子邮件;)

  3. 然后用户点击该链接并发送到处理器,该控制器处理〜/ invite / {nonce}的请求,该控制器将显示一个表单,允许用户输入新的用户名和密码,将nonce存储在隐藏的领域。

  4. 发布表单会使用IUserService.DecryptNonce(...)解密nonce,这样您就可以访问用户名 - 然后您可以将其传递给IMembershipService.GetUser(...)以获取相应的IUser,并对其进行更新使用其余的发布信息(用户名,密码使用IMembershipService.SetPassword(...)等)。

  5. IIRC的大部分内容是通过遵循Orchard如何处理丢失密码的请求来完成的,因为它基本上是相同的过程 - 为给定用户生成一个唯一的URL,并将其作为一个参考,一旦他们导航到用户就检索用户URL。

    **此时您无需创建用户内容项,只要您设置了用户名,就可以使用IContentManager.New<UserPart>("User")的结果。如果您不想在步骤4接受邀请之前创建新的用户内容项,这将非常有用。