我會使用ASP.NET成員資格和角色提供者模型。如果您想要使用自定義表格,可以創建一個從成員資格提供程序繼承的類。有許多方法,你可以實現支持諸如更改密碼,忘記密碼等......但一個用於登錄會的ValidateUser
public sealed class MyMembershipProvider : MembershipProvider
{
public override bool ValidateUser(string username, string password)
{
bool isValid = false;
// your authentication logic here
var ticket = new FormsAuthenticationTicket(
1,
YOUR_USER_ID_HERE,
DateTime.Now,
DateTime.Now.AddMinutes(30),
false,
name,
FormsAuthentication.FormsCookiePath);
var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));
HttpContext.Current.Response.Cookies.Add(authCookie);
return isValid;
}
}
您還需要創建一個角色提供,如果你願意就像那裏有不同級別的用戶一樣。爲此,您將繼承RoleProvider類。
public sealed class MyRoleProvider : RoleProvider
{
// Implement logic here
}
要授權您的應用程序的某些區域,您可以使用Authorize屬性。
public class MyController : Controller
{
[Authorize(Roles="Role1,Role2")]
public ActionResult Index()
{
// Implement your code
}
}
最後是你必須做的就是它使用您的供應商在web.config一些配置。
<authentication mode="Forms">
<forms loginUrl="~/Login" timeout="2880"/>
</authentication>
<membership defaultProvider="MyMembershipProvider" userIsOnlineTimeWindow="20">
<providers>
<clear/>
<add name="MyMembershipProvider" type="Your.NameSpace.MyMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="false" requiresQuestionAndAnswer="false" writeExceptionsToEventLog="false"/>
</providers>
</membership>
<roleManager enabled="true" defaultProvider="MyRoleProvider" cacheRolesInCookie="true">
<providers>
<clear/>
<add name="MyRoleProvider" type="Your.NameSpace.MyRoleProvider"/>
</providers>
</roleManager>
你可以找到MSDN
我實現了自定義的成員提供它現在作爲我除了感謝! – Artegon