Asp.net mvc MVC Authorize属性验证JSON值
我有以下代码,它可以在URL为/Projects/{userId}/{Id}的情况下正常工作 但是如果我用/Projects/和JSON值将值发布到页面上Asp.net mvc MVC Authorize属性验证JSON值,asp.net-mvc,attributes,Asp.net Mvc,Attributes,我有以下代码,它可以在URL为/Projects/{userId}/{Id}的情况下正常工作 但是如果我用/Projects/和JSON值将值发布到页面上 {"userId":1234,"Id":145} 它不会拾取JSON值,UserId和Id都为null 代码如下 protected override bool AuthorizeCore(HttpContextBase httpContext) { int documentIdfound, userIdFound; int
{"userId":1234,"Id":145}
它不会拾取JSON值,UserId和Id都为null
代码如下
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
int documentIdfound, userIdFound;
int? documentId = null;
var documentIdRoute = httpContext.Request.RequestContext.RouteData.Values["Id"];
if (int.TryParse((string)documentIdRoute, out documentIdfound))
documentId = documentIdfound;
//if we havent found the ProjectId in the RouteData check the querystring. Just in case
if (documentId == null)
{
documentIdRoute = httpContext.Request.QueryString["Id"];
if (int.TryParse((string)documentIdRoute, out documentIdfound))
documentId = documentIdfound;
}
var userIdRoute = httpContext.Request.RequestContext.RouteData.Values["userId"];
int.TryParse((string)userIdRoute, out userIdFound);
var gi = GetCurrentUser();
try
{
var userFound = gi.UserProfiles.Where(x => x.UserId == userIdFound).FirstOrDefault();
if (userFound != null)
{
return gi.IsUserValid(userFound.UserId, documentId.Value);
}
else
return false;
}
catch (Exception ex)
{
AddErrorToDB(ex);
return false;
}
}
尝试将参数值作为字符串发送:
{'userId':'1234','Id':'145'}
这将解决问题。将json绑定到变量应该是一个模型绑定器问题。为此,您需要添加costum json模型绑定器