有没有人通过电子邮件通过邀请链接探索允许用户在Orchard注册?我希望我的管理员有一个表格,他们可以输入一个电子邮件地址并向这些人发送注册邀请。
答案 0 :(得分:1)
我已经实现了非常类似的东西。大多数硬盘已经内置在Orchard中,只是利用已有的东西。
创建新用户,使用他们的电子邮件地址作为用户名(仅用作占位符)和随机密码。他们的注册状态应设置为“待定”,以防止他们登录,直到他们完成邀请过程。 **
在发送电子邮件时,请使用IUserService.CreateNonce(...)
方法为新用户创建唯一令牌。使用此随机数创建一个URL,例如〜/ invite / {nonce},将其插入您的电子邮件并通过IMessageManager.Send(...)
发送出去(我们实际上会触发一条规则来执行此操作 - 它允许同时触发其他内容并且也是一种hacky方式允许使用令牌自定义外发电子邮件;)
然后用户点击该链接并发送到处理器,该控制器处理〜/ invite / {nonce}的请求,该控制器将显示一个表单,允许用户输入新的用户名和密码,将nonce存储在隐藏的领域。
发布表单会使用IUserService.DecryptNonce(...)
解密nonce,这样您就可以访问用户名 - 然后您可以将其传递给IMembershipService.GetUser(...)
以获取相应的IUser
,并对其进行更新使用其余的发布信息(用户名,密码使用IMembershipService.SetPassword(...)
等)。
**此时您无需创建用户内容项,只要您设置了用户名,就可以使用IContentManager.New<UserPart>("User")
的结果。如果您不想在步骤4接受邀请之前创建新的用户内容项,这将非常有用。