【ASP.NET MVC】学習中:アクションフィルタとCookie

C#

学習内容

・アクションフィルタ:ActionFilterAttribute(System.Web.Mvc)の使い方

・Cookieの使い方

実際のプログラム

(1). App_Start/FilterConfig.csにこれから追加するアクションフィルタのクラスを追加する
・・・すべてのコントローラの処理で実行される

    public class FilterConfig
    {
        public static void RegisterGlobalFilters(GlobalFilterCollection filters)
        {
            filters.Add(new HandleErrorAttribute());
            filters.Add(new TestActionFilter());
 // 追加:これから作るフィルタクラスを追加
        }
    }

(2). アクションフィルタのクラスを作成

using TestApp.Controllers;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace TestApp.ActionFilters
{
    public class TestActionFilter : ActionFilterAttribute
    {

        // コントローラが実行される前に呼び出されるメソッド
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            HttpCookie reqCookie = HttpContext.Current.Request.Cookies.Get("test_cookie");
            if (reqCookie == null)
            {
                // LoginControllerでなければLoginControllerにリダイレクト
                if (filterContext.Controller is LoginController == false)
                {
                    filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
                    {
                        controller = "Login",
                        action = "Index"
                    }));
                }
            }
        }
    }
}

(3). Cookieの登録

using System;
using System.Web;
using System.Web.Mvc;

・・・

        public ActionResult Index()
        {

            HttpCookie cookie = new HttpCookie("test_cookie");
            cookie.Value = DateTime.Now.ToString();
            cookie.Expires = DateTime.Now.AddSeconds(30);
 // テストのため30秒で破棄
            this.HttpContext.Response.Cookies.Add(cookie);

            return View();
        }

とりあえず、ここまでです。

コメント