2011-08-18 3 views
9

인가 Authorize 속성이있는 컨트롤러 클래스의 한 동작에서 [Authorize] 속성을 무시하는 한 가지 방법이 있습니까?AuthorizeAttribute를 컨트롤러 클래스에 동시에 적용하십시오.

 [Authorize] 
     public class MyController : Controller 
     { 
      [Authorize(Users="?")]//I tried to do that and with "*", but unsuccessfuly, 
      public ActionResult PublicMethod() 
      { 
      //some code 
      } 

      public ActionResult PrivateMethod() 
      { 
      //some code 
      } 
     } 

PrivateMethod()에는 인증이 필요하지만 필수 항목이어야합니다.

추신 : 맞춤 필터를 만들고 싶지 않습니다.

[]의

+1

당신이에 대한 클래스 MyController에에있는 권한 부여를 무시하려고 액션 PublicMethod 또는 PrivateMethod? – itsmatt

+0

PublicMethod 작업은 무시해야합니다. 나는 틀린 것을 썼다, 미안하다, 그것은 지금 고쳤다! –

답변

4

이 불가능 기본적으로 - 당신이 컨트롤러 [권한 부여]를 설정 한 경우 만 행동에 액세스 할 수 있습니다 사용자를 인증.

또는

당신은 사용자 정의 결정을 시도 할 수 있습니다

: stackoverflow.

3

해결책은이 문서에 : 당신이 AllowAnonymous 사용자 지정 특성과 행동을 장식 화이트리스트 방식에 대한 Securing your ASP.NET MVC 3 Application

기사 회담. AuthorizeAttributeOnAuthorization 메소드를 연장하여 AllowAnonymous -actions의 권한 점검을 건너 뛰도록 요구합니다. (접근 방식은 레위의 MVC 팀의 보안 전문가로 적립됩니다.)

16

당신은 [AllowAnonymous]

[Authorize] 
public class MyController : Controller 
{ 
    [AllowAnonymous] 
    public ActionResult PublicMethod() 
    { 
      //some code 
    } 

    public ActionResult PrivateMethod() 
    { 
      //some code 
    } 
    } 
0
을 사용할 수 있습니다
public class MyController : Controller 
    { 
     [Authorize] //it will only work for the following action 
     public ActionResult PublicMethod() 
     { 
     //some code 
     } 

     public ActionResult PrivateMethod() //[Authorize] will not work for this action 
     { 
     //some code 
     } 
    } 
+0

답을 설명하기 위해 몇 가지 단어를 추가해보십시오. 일반적으로 코드에 대한 대답은별로 도움이되지 않습니다. – Matt

관련 문제