我是否需要自定义成员资格提供程序类?

时间:2011-12-27 15:47:37

标签: asp.net asp.net-mvc custom-membershipprovider

我不需要Roles的东西。 我只有一个拥有这些属性的用户:

Id
Firstname
Last name
Institute
Street
City
Postal
Country
Email
Password
IsCustomer
IsAdmin

当用户登录他的帐户而不是:

if (Membership.ValidateUser(model.UserName, model.Password))

我会打电话给我

if (UserRepository.ValidateUser(model.UserName, model.Password))

如果用户存在有效,我仍然可以区分IsAdmin。

如果IsAdmin我重定向到管理页面或客户区域。

那么我真的需要所有会员提供者的东西吗?

3 个答案:

答案 0 :(得分:0)

here

  

如果找到有效的,未过期的身份验证票证,则   FormsAuthenticationModule对其进行解码以确定请求者的身份   身份。它会创建一个新的 GenericPrincipal 对象并将其分配给    HttpContext.User 对象。一个委托人的目的,如   GenericPrincipal,用于标识经过身份验证的用户的名称和   她属于哪个角色。

所以,如果您需要与当前用户合作
(即<asp:LoginView ID="LoginView1" runat="server">
string user = System.Web.HttpContext.Current.User.Identity.Name;
<authorization> <deny users="*"/> <allow roles="Administrator"/> </authorization>

您应该实施自定义成员资格提供程序

答案 1 :(得分:0)

是的,您需要自定义成员资格提供程序。关于如何创建它,Code Project上有this article可以用作参考

答案 2 :(得分:0)

在一天结束时,您可以使用这些方法中的任何一种。我使用了开箱即用的asp.net成员资格提供程序,并将其他数据存储在另一个表中,并将aspnet_userId作为FK。 在其他场合,我需要将用户对象与我的其他域模型进行更多集成,我使用了自定义MembershipProviders。由于source for the out of the box providers现在可用,实际上实现自己并不困难/参与。事实上,根据我的经验,这并不是那么罕见。

是的,如果您使用内置成员资格提供程序,则会涉及一些轻微的开销。 但是,如果您从asp.net开始,我建议您坚持使用内置的asp.net成员资格提供程序。

顺便说一句,你提到:

  

我不需要角色的东西

哦,是的,你做到了!目前你只限于一个角色:IsAdmin。如果您需要支持其他角色,那么您提出的实施将成为一个问题。设计asp.net membershipProviders时有很多想法/经验。 你使用它们所付出的代价可以忽略不计,你基本上什么都没有,并且可能有很多好处。