2

我不需要角色的东西。我只有一个具有这些属性的用户:

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 我重定向到管理页面或客户区域。

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

4

3 回答 3

0

这里

如果找到有效的、未过期的身份验证票证,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>

你应该实现你的自定义会员提供者

于 2011-12-27T16:08:29.410 回答
0

是的,您需要一个客户会员提供商。关于如何创建它,有这篇关于代码项目的文章你可以作为参考

于 2011-12-27T16:11:33.653 回答
0

归根结底,您可以使用其中任何一种方法。我使用了开箱即用的 asp.net 成员资格提供程序,并将附加数据存储在另一个表中,其中 aspnet_userId 作为 FK。在其他情况下,我需要将用户对象与我的域模型的其余部分进行更多集成,我使用了自定义 MembershipProviders。由于开箱即用的提供程序的源代码现在可用,因此实现您自己的提供程序实际上并没有那么困难/涉及。事实上,根据我的经验,这种情况并不少见。

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

顺便说一句,你提到:

我不需要角色的东西

哦,是的,你知道!目前,您将自己限制在一个角色中:IsAdmin。如果您以后需要支持其他角色,那么您提议的实施将成为一个问题。在设计 asp.net membersProviders 时有很多想法/经验。您为使用它们所付出的代价可以忽略不计,您基本上不会失去任何东西,并且可能会获得很多收益。

于 2011-12-27T20:04:00.850 回答