メインメニューを開く

「ASP.NET MVC/フィルター」を編集中

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

最新版 編集中の文章
1行目: 1行目:
 
[[ASP.NET MVC]]の'''フィルター'''とは、コントローラークラスやアクションメソッド(コントローラークラスのメソッド)に、[[属性]](Attribute)もちいて処理を挿入する機能のことである。
 
[[ASP.NET MVC]]の'''フィルター'''とは、コントローラークラスやアクションメソッド(コントローラークラスのメソッド)に、[[属性]](Attribute)もちいて処理を挿入する機能のことである。
 +
 +
たとえばユーザー認証処理がされている、されていない、などの処理を[[アクション]]ごとに書いていたのでは面倒、かつ本流ではないソースコードが入りまくり見通しが悪くなるのでフィルター化しておくと便利だという。
  
 
== 使い道の例 ==
 
== 使い道の例 ==
[[アクション]]ごとにユーザー認証処理が「されている」「されていない」などの処理を書いていたのでは面倒、かつ本流ではない[[ソースコード]]が入りまくり見通しが悪くなるのでフィルター化しておくと便利だという。
+
たとえばEditアクションはログインしているユーザーのみとする場合は以下のようになる。
 
 
たとえばEditアクションはログインしているユーザーのみ使えるとする場合は、以下のようにEditアクションにAuthorizeフィルター(アトリビュート)を付ける。
 
 
<source lang="csharp">
 
<source lang="csharp">
 
[Authorize]
 
[Authorize]
17行目: 17行目:
  
 
== フィルターの種類 ==
 
== フィルターの種類 ==
[[ASP.NET MVC]]のフィルターは大きく分けて、承認フィルター、アクションフィルター、結果フィルター、例外フィルターの4つに分けられる。
+
[[ASP.NET MVC]]のフィルターは大きく、承認フィルター、アクションフィルター、結果フィルター、例外フィルターの4つに分けられる。
  
 
=== 承認フィルター ===
 
=== 承認フィルター ===
74行目: 74行目:
 
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
 
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
 
public class AuthorizeAttribute
 
public class AuthorizeAttribute
   : FilterAttribute,     // FilterAttributeを継承して
+
   : FilterAttribute,  
     IAuthorizationFilter // IAuthorizationFilterを実装する
+
     IAuthorizationFilter
 
{
 
{
 
     //...
 
     //...
}
 
</source>
 
 
なお、一般的なアクションフィルターであればActionFilterAttributeクラスという便利クラスもあるので、そちらを継承して使った方が手っ取り早い。
 
<source lang="csharp">
 
public class LoggingFilterAttribute : ActionFilterAttribute
 
{
 
    // アクションフィルター前処理
 
    public override void OnActionExecuting(ActionExecutingContext filterContext)
 
    {
 
        filterContext.HttpContext.Trace.Write(
 
            "(Logging Filter)Action Executing: "
 
            + filterContext.ActionDescriptor.ActionName);
 
 
        base.OnActionExecuting(filterContext);
 
    }
 
 
    // アクションフィルター後処理
 
    public override void OnActionExecuted(ActionExecutedContext filterContext)
 
    {
 
        if (filterContext.Exception != null)
 
        {
 
            filterContext.HttpContext.Trace.Write("(Logging Filter)Exception thrown");
 
        }
 
 
        base.OnActionExecuted(filterContext);
 
    }
 
 
}
 
}
 
</source>
 
</source>
110行目: 83行目:
 
== 関連項目 ==
 
== 関連項目 ==
 
* [[ASP.NET MVC]]
 
* [[ASP.NET MVC]]
** [[ASP.NET MVC/セレクター]]
 
  
 
== 参考文献 ==
 
== 参考文献 ==
{{reflist}}
+
<references/>
 +
== 外部リンク ==
  
 
{{stub}}
 
{{stub}}

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート:

このページは 1 個の隠しカテゴリに属しています: