是否可以通过HttpActionContext对象访问post或get参数?
我有一组传感器可以将数据记录到提供REST API的Web服务器上.我想通过让传感器在数据中包含其硬件ID然后在数据库中查找以查看id是否存在来介绍某种身份验证/授权.由于API提供了许多web api操作方法,我最好使用自定义授权属性
public class ApiAuthorizationFilter : AuthorizeAttribute
{
protected override bool IsAuthorized(HttpActionContext actionContext)
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
如何从actionContext访问post/get数据?
编辑:POST的示例
POST /Api/api/ActionMethod/ HTTP/1.1\r\n
Content-Type: application/json\r\n
Host: localhost\r\n
Accept: */*\r\n
Content-Length:52\r\n
\r\n
{"Id": '121a222bc', "Time": '2012-02-02 12:00:00'}\r\n
Run Code Online (Sandbox Code Playgroud)
祝你今天愉快!
我正在尝试使用aspnet核心实现基于权限的访问控制.为了动态管理用户角色和权限(create_product,delete_product等),它们存储在数据库中.数据模型类似于http://i.stack.imgur.com/CHMPE.png
在aspnet核心之前(在MVC 5中)我使用AuthorizeAttribute下面的自定义来处理这个问题:
public class CustomAuthorizeAttribute : AuthorizeAttribute
{
private readonly string _permissionName { get; set; }
[Inject]
public IAccessControlService _accessControlService { get; set; }
public CustomAuthorizeAttribute(string permissionName = "")
{
_permissionName = permissionName;
}
public override void OnAuthorization(AuthorizationContext filterContext)
{
base.OnAuthorization(filterContext);
var user = _accessControlService.GetUser();
if (PermissionName != "" && !user.HasPermission(_permissionName))
{
// set error result
filterContext.HttpContext.Response.StatusCode = 403;
return;
}
filterContext.HttpContext.Items["CUSTOM_USER"] = user;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在下面的动作方法中使用它:
[HttpGet]
[CustomAuthorize(PermissionEnum.PERSON_LIST)]
public ActionResult Index(PersonListQuery query){ }
Run Code Online (Sandbox Code Playgroud)
另外,我在视图中使用HttpContext.Items ["CUSTOM_USER"]来显示或隐藏html部分: …