この質問には多くの重複があるかもしれません。しかし、MVC のデフォルト メンバーシップを無視し、Cookie を使用してカスタム ログインを使用しました。そのため、サンプルのようにカスタム承認属性を作成することはできません。私はこのようなユーザーモデルを持っています:
public class MyUserModel
{
public string Id{ get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public bool RememberMe { get; set; }
public bool RoleId { get; set; }
}
ここに私のログインアクションがあります:
[HttpPost]
public ActionResult LogIn(MyUserModel model)
{
if ((Request.Browser.Cookies))
{
if ((Request.Cookies["UserInfo"] == null))
{
if (model.RememberMe)
{
Response.Cookies["UserInfo"].Expires = DateTime.Now.AddDays(30);
}
else
{
Response.Cookies["UserInfo"].Expires = DateTime.Now.AddMinutes(Session.Timeout);
}
Response.Cookies["UserInfo"]["UserName"] = model.UserName;
Response.Cookies["UserInfo"]["Password"] = model.Password;
Response.Cookies["UserInfo"]["Id"] = model.Id.ToString();
}
else
{
Response.Cookies["UserInfo"]["UserName"] = model.UserName;
Response.Cookies["UserInfo"]["Password"] = model.Password;
Response.Cookies["UserInfo"]["Id"] = model.Id.ToString();
}
}
return RedirectToAction("Index", "Home");
}
RoleIdでカスタム承認属性を作成する必要があります。ちなみに、私
bool UserInRole(roleId), bool IsUserAuthenticated()
は準備ができているメソッドを持っています。
下手な英語でごめんなさい。