2011-03-31 37 views
9

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

回答

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

看看这个soccer俱乐部网站asp.net入门套件。

0

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

成员资格提供程序对于WebForms和MVC是一样的,在SO和Google上有很多例子。

2

如果您正在寻找例如存储配置文件类型的信息名字,姓名,职称等,然后你应该可以使用内置于ASP.NET Membership中的Profile系统。如果您想要存储更多与身份相关的信息,那么您需要创建某种自定义会员供应商。在ASP.NET网站上创建自定义提供商的视频很好:http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider

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

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

Authorize属性告诉MVC只允许通过认证的用户,在“播放器”的作用调用操作方法。您仍然需要限制前端文章链接的可用性,但有几种方法可以做到这一点。

有一个伟大的系列赛的斯科特·米切尔的文章涵盖了所有事情的会员制:http://www.4guysfromrolla.com/articles/120705-1.aspx

1

我建议你:

  • 使用会员提供商只是处理 具有用户注册和 认证。并让它照顾用户安全的东西(休息密码,验证用户....)

  • 然后使用角色的 用户分开,他们的角色(“玩家, normalUsers,..”)。

  • 而且NEVER利用档案提供 导致它的成本这么多的流量,你 不想,而不是你能 使数据库自定义表 储存您的附加信息和。

  • 然后,您可以使用EF或任何ORM获取 这个信息,只要你想。

  • 不要忘记在控制器和操作中使用授权属性[Authorize(Roles="Players")],这些授权属性将在角色上消失。
相关问题