2023-02-16 359
是否有什么让我退缩,而仅执行整个会员资格,角色和个人资料自定义,而无需从Mexthipprovider等抽象类中继承,等等?
?
MSDN明确指出:”实施自定义角色提供商时,您需要继承Roleprovider抽象类.” ( us/library/system.web.security.roleprovider.aspx )
但是,当我在这里前进时,我发现我真的为我们的特定需求定制了整个过程,在许多情况下,我什至没有实施继承的东西,而是要自己做方法.我正在做的一个例子是” Getallroles”方法. .NET希望我实现一种返回字符串数组的方法.我发现这不满足我的需求,因为在我们的情况下,”角色”包含的信息不仅仅是名称 – 例如,我们对多种语言中的角色描述.因此,我去了自己的自定义类称为Projectrole,并使我的Getallroles方法返回List<ProjectRole>.然后在演示层上我可以使用简单的for循环提取每个项目的所有数据.
同样,我不想返回用户的会员资格,而是我可以提供自己的字段的Projectuser.
到目前为止,一切都很好.但是我还没有完成.我想知道的是,我是否以某种方式搞砸了自己,还没有意识到吗?为了登录,我正在做
if (ProjectMembershipProvider.ValidateUser(UsernameTextBox.Text, PasswordTextBox.Text == true)
{
FormsAuthentication.SetAuthCookie(UsernameTextBox.Text, true);
}
如果我没记错的话,此时我什至没有以任何方式使用ASP.NET提供商自己的方法.但是,令我担心的是,最终,我仍然希望能够使用某些东西,例如User.Identity.IsAuthenticated和User.Identity.Name,例如在内部显示用户名,例如”Welcome ” + User.Identity.Name.如果我走这条路线,这将是可能的吗?
tl; dr —我是否以某种方式不正确地使用我继承的提供商,但还没有意识到它?
尽管Tim对实施的细节是错误的,但他的论点是正确的.如果您希望使用会员资格API,则必须从抽象类中继承,因为API取决于这些抽象类. API没有其他方法知道要使用的接口.
这并不意味着您必须使用会员API.但是,正如蒂姆(Tim)提到的那样,您将失去会员资格的最大好处之一,即您可以插入通用提供商,这完全与您的应用程序无关.
RoleProvider具有返回字符串的特定界面的原因是,可以将这些字符串与角色的标准声明(即User.IsInRole()等)进行比较. .如果您不实施标准版本,则如果您尝试使用固有的功能,它将引发异常.
有解决方案.会员资格,角色等只是其他系统的实现,尤其是IPrincipal和IIdentity.您可以完全绕过角色,会员资格等.如果您实现了这些接口的版本.然后,使用User.IsInRole()将调用您的IPrincipal实现,User.Identity.Name将从您的自定义IIdentity实现中返回数据.然后,您已经放弃了对正式会员资格和角色API的支持(没有较低级别的配置文件接口,配置文件只是会员资格API的一部分)
您为什么要关心这些?因为框架整个安全基础架构都围绕它们构建.如果您只是尝试使用会话变量进行自己的安全性,那么您将拥有一个不安全且容易折断的系统.
您不必从MemberHippRovider,Roleprovider和ProfileProvider继承.
但是,如果您不这样做,您会为知道如何与课堂交谈的事情失去很多好处.突然之间,您必须为以下方式滚动自己的机制.
– 登录用户(您无法使用OOTB登录/注销控件)
– 任何使用角色或会员类的东西,例如角色.Isinrole(” admin”)
– 将身份验证的用户详细信息存储在cookie
中
– 用户注册(好吧,OOTB的实现相当有限)
– 设置哪些页面/目录需要身份验证,如果用户试图击中它们并且没有进行身份验证该怎么办(使用MementHippRovider/Roleproviders,这是由OOTB web.config元素完成的)
– 任何使用授权属性
的东西
所有这些都可以在没有太多努力的情况下克服.但是,主要损害自己滚动的是您将身份验证/授权机制紧密地耦合到您的网站,而使用MembersHippRovider/Roleprovider实现您可以创建一个可以简单地交换成员资格系统的网站,只需在将新的DLL丢弃, bin文件夹和更改web.config设置.
当然,您可以拥有自己的BetterMembersHippRovider/BetterRoleprovider抽象类,这些类别从中继承到仍然具有松散的耦合.但是,您再也无法将您的会员类放入知道如何与会员Hhipproviders打交道的系统中,例如许多现有的.NET网站,SharePoint,Dot Net Nuke等
以上所述是小编给大家介绍的自定义会员/角色/档案提供者,而不继承MembershipProvider、RoleProvider等?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/34065.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态