ASP.NET MVC是否存在“账户激活”工作流程?

14

我需要在 .net MVC 中实现常见的“新账户”模式,其中:

  1. 收集用户信息;
  2. 我的系统发送一封电子邮件;
  3. 用户需要回复电子邮件以激活账户。

是否有最佳实践或示例网站可以指导我的工作?

非常感谢。

编辑:请注意,我在这里尝试深入了解一种模式,而不仅是将提交的密码与存储的密码进行比较。

另请注意,我在这里并没有试图引用Windows Workflow。标题仅以通用意义使用工作流。

谢谢。


1
投了一票。我也很感兴趣...我不太熟悉Membership ASP.Net提供程序等等...我知道MVC Storefront使用它们,所以也许你可以从那里得到一些启示。根据工作流程的建议,我必须补充一点:让我们远离WWF。 - user53791
如果可以的话,我会点赞你的评论...我离WWF太远了,以至于在给问题命名时甚至没有想到它。 - justSteve
好问题。我最终使用了成员资格入门套件(http://www.codeplex.com/MvcMembership)。它是为mvc设计的,但不能直接与当前版本配合使用。而且它有限制,不支持电子邮件等功能。这似乎是一个非常有用的答案(甚至是一个项目),可以为社区提供帮助。 - James S
3个回答

2

实现会员提供程序

MSDN 会员提供程序

覆盖一个方法,比如创建用户方法

MSDN Membership.CreateUser()

你只需要继承AspNetMembershipProvider、覆盖CreateUser方法并实现自定义代码:

public class MyNewMembershipProvider : AspNetMembershipProvider
{
        public override MembershipUser CreateUser(
            string username,
            string password,
            string email,
            string passwordQuestion,
            string passwordAnswer,
            bool isApproved,
            Object providerUserKey,
            out MembershipCreateStatus status)

            //Do whatever you need to do
            SendUserValidationMessage(emailAddress, responseMessage, 
                                      options, etc, whatever);

            return base.CreateUser(username, password, email, 
                                    passwordQuestion, passwordAnswer, 
                                    isApproved, providerUserKey, out status)
    }
}

我希望这有所帮助。我认为WF可能过于复杂,不适合处理此类问题。

0

好奇:为什么不使用.NET成员资格提供程序?我自己还没有机会使用它们,但我相信它们提供了这个功能。


我只是不太愿意购买另一个微软子系统。我选择MVC的部分原因是它与jQuery的兼容性非常好。我不喜欢Web Forms。但我会看一下jw的逐步说明,然后再决定如何处理。谢谢。 - justSteve
我理解 - 在可能的情况下,我倾向于使用开源技术而非微软的技术。然而,他们的Membership API相当不错且可扩展。别忘了它可以很容易地扩展 - 只需搜索“自定义.net membership API”(例如:http://www.devx.com/asp/Article/29256)。最坏的情况是,你将发现自己需要编写自己的可扩展会员框架;如果你熟悉.net,这也不应该花费太长时间。 - synhershko
justSteve:如果您不想购买另一个MS子系统,为什么选择购买全新的框架(WorkFlow)?成员提供程序真的很容易实现,您可以轻松地从AspNetMembershipProvider类派生新类以实现新功能。坦率地说,这比使用WF更符合“ASP.NETy”的风格。 - Richard Clayton
我认为.NET Membership很有帮助!我太懒了,不想自己编写密码的加盐和哈希。此外,它还完美地集成到ASP.NET(MVC)和其他.NET功能中。我将其与NHibernate域类一起使用。我是一个快乐的用户。 - Mads
@justSteve:嗯……“不买账”。按照这个逻辑,我们应该拒绝使用.NET、IIS,甚至是VS和相关的开发工具。我们也应该拒绝使用Azure。虽然以上所有内容都可以被拒绝,但值得一提的是,这是一个行业,因此不买账会导致我们和最终用户的实际损失。 - g.pickardou

0
这里有一个逐步博客, 介绍如何使用asp.net mvc和其内建的成员资格接口。我觉得它非常有用。

我没有看到任何关于我的参考发送注册者电子邮件以激活新帐户链接的内容。 - justSteve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接