2014-09-05 2 views
0

로그인 한 사용자 이름을 기반으로 Web Api에서 [Authorize]을 사용하여 일부 방법에 대한 권한을 적용하고 싶습니다. "앨리스" 대신에webapi의 사용자 이름을 기준으로 사용자 인증

[Authorize(Users = "Alice")] 
public ServiceResult<List<DefaultCities>> GetCitiesByZipCode(String zipcode) 
{ 
} 

은 내가 CurrentLoggedInUserId의 기초의 이름을주고 싶다. 어떻게해야합니까?

답변

2

맞춤 권한 부여 속성을 만드는 방법은 어떻습니까?

public class MyAuthorizationAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     //Authorization logic 
     if(httpContext.User.Identity.Name.Equals("Alice")) 
     { 
      return true; 
     } 
    } 

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
    { 
     //Handle unauthorized logic 
    } 
} 

그리고는 컨트롤러

[MyAuthorization] 
public class HomeController : Controller 
{ 
    public ActionResult About() {} 
    public ActionResult Contact() {} 
} 

AuthorizeCore -method 당신이 HomeController에서 작업을 호출 할 때마다 실행됩니다 해당 사용자 지정 특성을 첨부합니다.

당신이 승인이 특정 행동에 대한 실행하지 않으 그러나 경우 [AllowAnonymus]

[AllowAnonymus] 
public ActionResult Home() 
{ 
    //Everyone can run this action 
    return View(); 
} 
+0

가 작동하지로 주석을 달 수 있습니다 ....이 사용자 정의 속성이 호출되지 않습니다. 내가 잘못하고있는 것은 무엇일까요? –

+0

일부 코드를 업데이트하고 추가 정보를 추가했습니다. –

+0

여전히 AuthorizeCore를 호출 할 수 없습니다. –