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を参照してください。