2023-02-16 313
此处有一些线程,但大多数是过时的,它们中的参考链接更加过时.
我得到了这个网站,我需要用它自己的表结构连接到外部SQL Server(MSSQL),使用默认的ASP.NET隶属提供程序结构不是一个选项.表布局真的很简单,usertable看起来像这样(它被称为个人)
Individuals
- UserGuid (uniqueidentifier/guid, unique)
- Name (varchar)
- Password (varchar)
- HasAccess (tinyint/ 1 or 0)
- DateTime (datetime)
- Log (xml)
所需的功能只是记录某人,其余的不是必需的:)
我遵循一些指南,但大多数是过时的,非常复杂.不幸的是,MSDN示例遵循此模式,文档不是很好.
所以如果有人有一些资源显示如何,或者愿意在这里发布邮寄或类似的资源,我会很感激.
谢谢!
它非常简单:
创建一个新的类文件(如果您未使用多层系统,则在项目的型号文件夹中,我们称为MyMembershipProvider.cs
从System.Web.Security.MembershipProvider
继承该类
自动创建所需的方法(继承类中的句点+空格)
完成!
所有方法都将具有NotImplementedException异常,您需要做的就是编辑每个方法并放置您自己的代码.例如,我定义GetUser,如下所示:
public override MembershipUser GetUser(string username, bool userIsOnline)
{
return db.GetUser(username);
}
db是我添加到类中的数据库存储库,如
MyServicesRepository db = new MyServicesRepository();
在那里,你会发现GetUser方法是:
public MembershipUser GetUser(string username)
{
OS_Users user = this.FindUserByUsername(username);
if (user == null)
return
new MembershipUser(
providerName: "MyMembershipProvider",
name: "",
providerUserKey: null,
email: "",
passwordQuestion: "",
comment: "",
isApproved: false,
isLockedOut: true,
creationDate: DateTime.UtcNow,
lastLoginDate: DateTime.UtcNow,
lastActivityDate: DateTime.UtcNow,
lastPasswordChangedDate: DateTime.UtcNow,
lastLockoutDate: DateTime.UtcNow);
return
new MembershipUser(
providerName: "MyMembershipProvider",
name: user.username,
providerUserKey: null,
email: user.email,
passwordQuestion: "",
comment: "ANYTHING you would like to pass",
isApproved: true,
isLockedOut: user.lockout,
creationDate: user.create_date,
lastLoginDate: user.lastLoginDate,
lastActivityDate: user.lastActivityDate,
lastPasswordChangedDate: user.lastPasswordChangedDate,
lastLockoutDate: user.lastLockoutDate);
}
为您使用的所有方法执行此操作(调试项目并查看您需要哪些) – 我只使用一些,而不是我真正不关心的是ChangePasswordQuestionAndAnswer,DeleteUser等的方法
只需确保在web.config中,您将新成员资格添加为:
<membership defaultProvider="MyMembershipProvider">
<providers>
<clear/>
<add name="MyMembershipProvider" type="Your.NameSpace.MyMembershipProvider" connectionStringName="OnlineServicesEntities"
enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false"
maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"
applicationName="/" />
</providers>
</membership>
你有一个很好的视频教程来自克里斯帕尔斯(2007年日期,但仍然大多有效)和代码,虽然视频教程在vb中,但让您了解步骤……
我不仅创建了我自己的会员提供者,而且我创建了我的角色提供者,你可以从上面的代码看,这是一个简单的成员资格,让你在你的申请中使用类似的东西:
[Authorize(Roles = "Partner, Admin")]
public ActionResult MyAction()
{
}
和
@if (Roles.IsUserInRole(Context.User.Identity.Name, "Admin"))
{
<div>You're an ADMIN, Congrats!</div>
}
您可以右键单击,或者在名称上键盘,然后按控制 + .,然后按 SPACE .
这里有几个线程
关于这个问题,但大多数是
过时和参考链接
它们更加过时.
自框架中引入ASP.NET 1.0页面.USER/Currentsession.USER/IPRINCIPAL/IIDENTITY模型不变.在Framework 2.0中,会员提供商已添加.那些”过时”的参考仍然是有效的指导. msdn
以上所述是小编给大家介绍的.NET 4.0中的自定义MembershipProvider,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/33818.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日
扫码二维码
获取最新动态