這真的很簡單:
創建一個新的類文件(如果你不使用多層系統,在項目的Models文件夾),讓我們叫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);
}
對所有使用的方法都進行此操作(調試項目並查看需要哪些方法) - 我只使用一些,而不是全部,因爲我並不關心m編制方法一樣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中,但讓我們來了解步驟...
http://www.asp.net/general/videos/how-do-i-create-a-custom-membership-provider
我並不僅創造我自己的會員提供,但我創造了我的角色提供以及,巫婆你可以從上面的代碼中看到,是因爲成員身份簡單,讓你在你的應用程序使用了諸如:
[Authorize(Roles = "Partner, Admin")]
public ActionResult MyAction()
{
}
和
@if (Roles.IsUserInRole(Context.User.Identity.Name, "Admin"))
{
<div>You're an ADMIN, Congrats!</div>
}
什麼是自動創建所需的方法(期+空間,在繼承類)
您可以用鼠標右鍵單擊,或對名稱上並按下控制 + 。然後空間。
我已經搜索了很多次簡單的提供商。總是發現一些過於複雜的東西。所以我決定創建自己的5個班級。見http://github.com/TesserisPro/ASP.NET-SImple-Security-Provider – Dmitry 2014-08-19 10:16:34