2011-04-01 5 views
1

기사를로드하고 표시하는 컨트롤러가 있습니다. 이 기사에는 그것이 사적인지 또는 공개인지를 보여주는 속성이 있습니다.특정 매개 변수에만 권한 부여가 필요한 컨트롤러

기사가 비공개 인 경우 기사를 표시하기 전에 사용자가 로그인하고 싶습니다.

기사에 공개 인 경우 권한 부여를 요구해서는 안되기 때문에 작업에 [Authorize] 속성을 넣기 만하면됩니다.

가장 건조한 방법은 무엇입니까?

나는 (I가 필요하지 않은 경우 내가 수동 리디렉션 및 전달하는 매개 변수를 쓰고 싶지 않을 것이다)

답변

3

하여 기본 권한 부여 모델의 기능 내장에 의존하고 싶은 일 것입니다 무엇 이걸하는 가장 마른 방법?

사용자 지정 권한 부여 특성 쓰기 :

public class MyAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     var articleId = httpContext.Request["id"] as string; 
     var article = SomeRepository.GetArticle(id); 
     // You can also correlate the article with the currently 
     // connected user and see if it belongs to him, ... 
     return article.IsPublic; 
    } 
} 

을 다음이 사용자 정의 속성을 가진 액션을 장식합니다.

+0

괜찮은 것처럼 보이지만 사용자가 로그인되어 있는지 확인해야합니다. – SoonDead

+0

아하지만 : base.AuthorizeCore (httpContext)가 모든 것을 해결합니다. – SoonDead

+0

후속 질문도 도와 드리겠습니다. http://stackoverflow.com/questions/5549371/using-action-parameters-in-custom-authorization-attribute-in -asp-net-mvc3 – SoonDead

관련 문제