2014-09-05 57 views
0

我想根據登錄的用戶名在Web Api中使用[授權]對某些方法應用權限。根據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 - 方法將每次在HomeController調用一個動作的時間運行。

然而,如果你不希望授權,針對具體的行動上運行,你可以用[AllowAnonymus]

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

不工作註釋它們....這個自定義屬性不會被調用。 我可能會做錯什麼? – 2014-09-05 10:39:18

+0

我更新了一些代碼並添加了附加信息 – 2014-09-05 13:19:36

+0

仍然無法調用AuthorizeCore。 – 2014-09-08 05:36:47