2009-10-08 23 views
9

これはおそらく新人質問です。ActionResultのカスタム属性

たとえば、私は数時間後にしかアクセスを許可したくないActionResultがあるとします。

また、私は自分のActionResultをカスタム属性で飾りたいとしましょう。

コードは次のようになります。

[AllowAccess(after="17:00:00", before="08:00:00")] 
public ActionResult AfterHoursPage() 
{ 
    //Do something not so interesting here; 

    return View(); 
} 

は、どのように私はこれが仕事になるだろう正確に

私はカスタム属性の作成についていくつかの研究を行ってきましたが、私はそれらを消費する方法について少し分かりません。

私はそれらの作成と使用についてほとんど何も知っていないことを想定してください。

答えて

14

は、この(未テスト)を試してみてください:

public class AllowAccessAttribute : AuthorizeAttribute 
{ 
    public DateTime before; 
    public DateTime after; 

    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     if (httpContext == null) 
      throw new ArgumentNullException("httpContext"); 

     DateTime current = DateTime.Now; 

     if (current < before | current > after) 
      return false; 

     return true; 
    } 
} 
ここ

さらに詳しい情報: 認証関連の問題についてはhttp://schotime.net/blog/index.php/2009/02/17/custom-authorization-with-aspnet-mvc/

+0

ロバートありがとう。私は別の方法で質問を再入力する必要がありますが、これは素晴らしい情報です。 :)しかし、これはすぐに現実にすぐに現れるでしょう。 – griegs

+0

答えで表現されているものではなく(現在の<前||現在の>後)なはずですか?違いは、バイナリか、またはレギュラーか! –

2

.net mvcで探しているものは、アクションフィルターです。

あなたのケースでは、ActionFilterAttributeクラスを拡張し、OnActionExecutingメソッドを実装する必要があります。

参照:アクションフィルタの適切な紹介については http://www.asp.net/learn/mvc/tutorial-14-cs.aspxをご覧ください。 ASP.NET MVC - CustomeAuthorize filter action using an external website for loggin in the user

+0

、あなた*必須*サブタイプAuthorizeAttribute何か少し似て参照してください。また

ActionFilterAttributeではなく、 http://blogs.teamb.com/craigstuntz/2009/09/09/38390/ –

+0

+1ありがとう@Deanと@Craig – griegs