2011-07-14 15 views
11

私のcontollerの上にauthorize属性があり、これは自分のすべてのアクションが含まれていることを意味します。 この属性からいくつかのアクションを除外したい(これらのアクションは匿名ユーザーが利用できます)。出来ますか?ASP.netのAuthorizeからいくつかのアクションを除外MVC

[Authorize] 
public class TestController : Controller 
{ 
    public ActionResult Index() 
    { 
    ... 
    } 
    ... 

    //available by anonymous 
    public ActionResult Test() 
    { 
    ... 
    } 
} 

答えて

11

あなたはヨーヨーのAllowAnonymous属性を作成し、アクションにこの属性を置くのこのブログの記事に概説されたアプローチを取ることができますUは除外する:

http://blogs.msdn.com/b/rickandy/archive/2011/05/02/securing-your-asp-net-mvc-3-application.aspx

これは、方法によって、フレームワークのvNextになります。

+0

私のブログの最新版はhttp://blogs.msdn.com/b/rickandy/archive/2012/03/23/securing-your-asp-net-mvc-4-app-andにあります。 -the-new-allowanonymous-attribute.aspx – RickAndMSFT

+1

[AllowAnonymous]は既にMVC 5に入っているので移動する方法です – Adamy

4

制限されたアクションの上に属性を置き、他のもの(匿名アクセスを許可するもの)だけを残しておきたい場合があります。

また、クラスの上部から取り出してください。あなたのコードが

// No [Authorize] here 
public class TestController : Controller 
{ 
    [Authorize] 
    public ActionResult Index() 
    { 
     // code here... 
    } 

    [Authorize] 
    public ActionResult Test() 
    { 
     // code here... 
    } 
} 

と論理的に等価であるように、コントローラ上で[Authorize]属性を置く

9

は、基本的にすべてのアクションの上に置くことへの近道であるあなたは、おそらく私はこれで行くよ場所を確認することができます - 削除しますコントローラからの属性と、あなたが制限されるようにしたい特定のアクションの上に置く:

// No [Authorize] here 
public class TestController : Controller 
{ 
    [Authorize] 
    public ActionResult Index() 
    { 
     // code here... 
    } 

    // no [Authorize] here either, so anonymous users can access it... 
    public ActionResult Test() 
    { 
     // code here... 
    } 
} 
関連する問題