独自のMembershipServiceを作成できます。
例:
新しいMembershipService.cs(または必要なもの)
パブリッククラスMembershipService
{{
public bool IsUserValid(string username、string password)
{{
var db = new DatabaseContext();
var user = db.GetUser(username、password);
//または、コンテキストまたはリポジトリを介してデータを取得したい場合
return(user!= null);
}
}
新しいFormsClass.cs
パブリッククラスFormService
{{
public void SignIn(string username、List <string> roles)
{{
FormsAuthenticationTicket authTicket = new
FormsAuthenticationTicket(1、//バージョン
ユーザー名、//ユーザー名
DateTime.Now、//作成
DateTime.Now.AddMinutes(30)、//有効期限
false、//永続的
string.Join( "、"、roles.ToArray())); //役割
文字列encTicket=FormsAuthentication.Encrypt(authTicket);
HttpContext.Current.Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName、encTicket));
GenericIdentity id = new GenericIdentity(username);
HttpContext.Current.User = new GenericPrincipal(id、roles.ToArray());
}
}
Global.asaxの場合:
protected void Application_PostAuthenticateRequest(オブジェクト送信者、EventArgs e)
{{
HttpCookie authCookie = HttpContext.Current.Request.Cookies [FormsAuthentication.FormsCookieName];
if(authCookie!= null)
{{
文字列encTicket=authCookie.Value;
if(!String.IsNullOrEmpty(encTicket))
{{
FormsAuthenticationTicketチケット=FormsAuthentication.Decrypt(encTicket);
FormsIdentity id =(FormsIdentity)Context.User.Identity;
var roles = ticket.UserData.Split( "、"。ToCharArray()、StringSplitOptions.RemoveEmptyEntries);
GenericPrincipal prin = new GenericPrincipal(id、roles);
HttpContext.Current.User = prin;
}
}
}