Authorizeフィルタ
第1回で触れた認証機能ですが、web.configによる記述ではなく、Authorizeフィルタを利用すると簡単に設定できます。
Authorizeフィルタは、設定するだけで認証していないユーザーに要求ページを表示する代わりに、ログインページへリダイレクトします。ログインユーザーには、要求ページを表示します。また、Authorizeフィルタの宣言は他のフィルタ同様に、Actionメソッドごとではなく、Controllerクラスそのものにもできます。
Authorizeフィルタのパラメタとして、特定ユーザーだけアクセスを許可するUsersプロパティとRolesプロパティの設定を行うことになります(RoleはASP.NETのMembershipで使用するRoleを設定)。
下記コードでは3種類のAuthorize属性の設定をコメントイン・コメントアウトを利用し記述しています。
// naokiとlibatyがAdmin権限あり
//[Authorize(Roles="Admin")]
//[Authorize(Users="fujiko,naoki")]
[Authorize]
public ActionResult AJAXIndex()
{
return View();
}
上記コードでは、Authorizeフィルタをいくつか設定しています。
(1)[Authorize]設定時
何もプロパティを設定しないで、Authorizeフィルタのみを設定した場合、ログオンユーザー以外(つまり匿名ユーザー)は、該当のアクションメソッドの動作を実行せずに、LogOnページへとリダイレクトされます。リダイレクトページの設定はweb.configで行われています。
<authentication mode="Forms"> <forms loginUrl="~/Account/LogOn" timeout="2880"/> </authentication>
太字部分を書きかえることで、自前のログインページへとリダイレクトさせることも可能です。
(2)[Authorize(Users = "fujiko,naoki")]設定時
Usersプロパティを設定した場合は、指定したユーザー以外のアクセスを許可しないことになります。
(3)[Authorize(Roles = "admin")]設定時
Rolesプロパティを設定した場合もUsersプロパティと同様です。指定されたロール以外のユーザーのアクセスを許可しません。
非常に簡単に、認証設定が行えることがお分かりいただけたかと思います。
OutputCacheフィルタ
OutputCacheフィルタは、ASP.NET MVC上でASP.NETのアウトプットキャッシュ機能を利用するためのフィルタです。通常のASP.NETはページディレクティヴに設定しますが、ASP.NET MVCでは属性として記述します。
利用方法は通常のASP.NETと変わりません。OutputCacheフィルタのパラメタとして、DurationやCacheProfileなどの設定を行います。
[OutputCache(Duration=5, VaryByParam = "none")]
public string WhatTimeIsIt()
{
return DateTime.Now.ToString();
}
画面では分かりづらいですが、5秒以内に再リクエストがあっても、時間の表示は変わらないようになっています。

