是否定制会员资格

时间:2011-03-31 07:55:31

标签: asp.net-mvc asp.net-mvc-3 asp.net-membership

我在ASP.NET MVC3中创建网站(足球,足球),我希望有用户(附加信息,然后用户使用默认会员资格,这些是普通访问者)和玩家,我认为最好是他们会继承用户并且有一些附加的iformation作为着装编号,...玩家也可以发表文章,用户可以只评论文章。什么是最好的方法呢?我应该使用默认会员提供商还是自己制作或使用某些第三方解决方案?您是否可以发布一些文章和教程来更改原始提供者或文章,以便为asp.net MVC3创建自己的提供者?或者它与MVC2相同?

5 个答案:

答案 0 :(得分:5)

创建自己的会员提供商非常容易。只需创建从MembershipProvider派生的类。并实现查看DB的成员(例如(或任何其他数据源))。

public class YourMembershipClass: MembershipProvider
{
    public override bool ValidateUser(string username, string password)
    {
         return YourDataLayer.ValidateUser(username, password);
    }
    public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
    {
        return YourDataLayer.GetSpecificUser(providerUserKey, userIsOnline);
    }
    // Implement the other methods as well
 }

然后将YourMembershipClass添加到web.config:

<membership defaultProvider="MlgMembership">
  <providers>
    <clear />
    <add name="CustomMembership" type="YourMembershipClass" enablePasswordRetrieval="false" />       
  </providers>
</membership>

答案 1 :(得分:2)

如果您要存储个人资料类型信息,例如对每个用户的名字,姓氏,职位等等,那么您应该能够使用ASP.NET成员资格中内置的Profile系统。如果您希望存储更多与身份相关的信息,那么您必须创建某种自定义成员资格提供程序。有一个关于在ASP.NET网站上创建自定义提供程序的好视频:http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider

关于允许不同类型的用户执行不同的操作,您可以使用ASP.NET成员资格中内置的Roles系统。您可以告诉您的操作方法仅允许来自特定角色的用户的呼叫。例如,如果你有一个PostArticle动作方法,并且你只希望玩家能够访问它,你会有这样的东西:

[Authorize(Roles="Player")]
public ActionResult PostArtcile(){
    return View();
}

Authorize属性告诉MVC仅允许“Player”角色中的经过身份验证的用户调用action方法。您仍然需要限制前端文章链接的可用性,但有几种方法可以做到这一点。

Scott Mitchell撰写了大量文章,涵盖所有基于会员资格的文章:http://www.4guysfromrolla.com/articles/120705-1.aspx

答案 2 :(得分:1)

查看此soccer俱乐部网站asp.net入门套件。

答案 3 :(得分:1)

我建议你:

  • 使用会员提供商进行交易 用户注册和 认证。并让它照顾用户安全的东西(休息密码,验证用户....)

  • 然后使用角色来分隔你的 用户对他们的角色(“玩家, normalUsers,...“)。

  • 从不使用个人资料提供程序 因为你花了这么多的流量 不想要,而不是你可以 在DataBase中创建自定义表 存储您的其他信息。

  • 然后您可以使用EF或任何ORM来获取 这些信息随时可用。

  • 不要忘记在控制器和操作中使用授权属性[Authorize(Roles="Players")],这些属性依赖于角色。

答案 4 :(得分:0)

我建议您实施自己的会员提供商,这意味着只实施您需要的部分,并为您的所有用户管理奠定基础。

会员提供商对于WebForms和MVC是相同的,在SO和Google上有很多例子。