ASP.NET MVC認証

5177 ワード

アイデンティティ認証の利点は、このページにログインしていない場合、リフレッシュ後に自動的にログインページにジャンプしてログインを要求し、アプリケーションのセキュリティを保証することです.Formsアイデンティティ認証はwebの下で最もよく使われていますが、どのように構成されていますか?下を参照(mvc 4ベース)
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();
        }

    }