基于web api中的用户名的授权用户

时间:2014-09-05 07:14:21

标签: asp.net-mvc asp.net-web-api authorization httpcontext

我想根据登录的用户名,在Web Api中使用 [授权] 对某些方法应用权限。

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

代替“Älice”我想提供 CurrentLoggedInUserId 基础的用户名。 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分: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();
}