我想根据登录的用户名,在Web Api中使用 [授权] 对某些方法应用权限。
[Authorize(Users = "Alice")]
public ServiceResult<List<DefaultCities>> GetCitiesByZipCode(String zipcode)
{
}
代替“Älice”我想提供 CurrentLoggedInUserId 基础的用户名。 我怎样才能做到这一点?
答案 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();
}