【发布时间】:2020-01-16 05:26:04
【问题描述】:
问题
如何使用自定义中间件在调用下一个上下文时获取响应正文?
从调试到达 await _next.Invoke(context) 行后;
不从操作结果getusermenu返回json数据
[HttpGet(Contracts.ApiRoutes.Security.GetUserMenus)]
public IActionResult GetUserMenu(string userId)
{
string strUserMenus = _SecurityService.GetUserMenus(userId);
return Ok(strUserMenus);
}
我需要从上面的操作结果中获取响应正文
header :
key : Authorization
value : ehhhheeedff .
我的代码我试试看:
public async Task InvokeAsync(HttpContext context, DataContext dataContext)
{
// than you logic to validate token
if (!validKey)
{
context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
await context.Response.WriteAsync("Invalid Token");
}
//if valid than next middleware Invoke
else
{
await _next.Invoke(context);
// i need after that get result on last of thread meaning return data of usermenu
}
}
}
public static class TokenExtensions
{
public static IApplicationBuilder UseTokenAuth(this IApplicationBuilder builder)
{
return builder.UseMiddleware<TokenValidateMiddleware>();
}
}
[no return data from access token][1]
https://i.stack.imgur.com/PHUMs.png
if(validtoken)
{
continue display getusermenuaction and show result
}
当令牌有效时,它会在浏览器 googlechrom 上返回如下数据
[
{
"form_name": "FrmAddPrograms",
"title": "Adding Screens",
"url": "",
"permissions": {
"Insert": "True",
"Edit": "True",
"Read": "True",
"Delete": "True",
"Print": "True",
"Excel": "False",
"RecordList": "False"
}
},
但在我的应用浏览器返回 无效的令牌
【问题讨论】:
-
您期待什么样的回应?在请求委托上调用 next 只会将请求转发到队列中的下一个中间件,或者请求到达 ASP.NET Core 在创建管道时提供的支持处理程序,该处理程序将请求沿管道发送回另一个方向。跨度>
-
转发请求到下一个中间件行并显示响应正文
标签: jwt asp.net-core-2.0 c#-7.0 jwt-auth