ASP.NET MVC認証
5177 ワード
アイデンティティ認証の利点は、このページにログインしていない場合、リフレッシュ後に自動的にログインページにジャンプしてログインを要求し、アプリケーションのセキュリティを保証することです.Formsアイデンティティ認証はwebの下で最もよく使われていますが、どのように構成されていますか?下を参照(mvc 4ベース)
1.webconfig,ノードに次の構成を追加
2.RouteConfigを構成し、defaultsをLoginから起動するように構成すると、起動ページがログインページになります
1.webconfig,
<authentication mode="Forms">
<forms loginUrl="~/Login"/>
</authentication>
2.RouteConfigを構成し、defaultsをLoginから起動するように構成すると、起動ページがログインページになります
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional }
);
}
3.FormsAuthアイデンティティ認証クラスの作成 public class FormsAuth
{
public static void SignIn()
{
// FormsAuthenticationTicket, 。
var ticket = new FormsAuthenticationTicket(2,
"anuodog", DateTime.Now, DateTime.Now.AddDays(1), true, " :123");
// Ticket, 。
var cookieValue = FormsAuthentication.Encrypt(ticket);
// Cookie
var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieValue)
{
HttpOnly = true,
Secure = FormsAuthentication.RequireSSL,
Domain = FormsAuthentication.CookieDomain,
Path = FormsAuthentication.FormsCookiePath
};
cookie.Expires = DateTime.Now.AddMinutes(20);
var context = HttpContext.Current;
// Cookie
context.Response.Cookies.Remove(cookie.Name);
context.Response.Cookies.Add(cookie);
}
public static void SingOut()
{
FormsAuthentication.SignOut();
}
}
4.LoginControllerでFormsAuthクラスの登録登録方法を呼び出す public class LoginController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult DoLogin()
{
FormsAuth.SignIn();
return Json("success");
}
public ActionResult DoLogout()
{
FormsAuth.SingOut();
return Json("success");
}
}
5.プロジェクトでのApp_StartフォルダにFilterConfigクラスが見つかり、構成が追加されました.次のコードコメントを参照してください. public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new AuthorizeAttribute());// Action [Authorize] , , Action , , 。
}
}
6.より細かく制御したい場合、Actionのアクセスは、5ステップの構成を削除し、制御する必要があるActionに[Authorize]特性を加えればよい.これにより、アクセスしたこのActionに[Authorize]特性があり、ログインしていない場合、ログインページにジャンプされ、以下のようになる. public class PtypeController : Controller
{
[Authorize]
public ActionResult Index()
{
return View();
}
}