我不需要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我重定向到管理页面或客户区域。
那么我真的需要所有会员提供者的东西吗?
答案 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时有很多想法/经验。 你使用它们所付出的代价可以忽略不计,你基本上什么都没有,并且可能有很多好处。