学習内容
・アクションフィルタ: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();
}
とりあえず、ここまでです。
コメント