【发布时间】:2023-03-07 07:02:01
【问题描述】:
我有一个 ASP.net 5.0 (MVC 6) 网站,并且该网站也用于一些移动应用程序。我有一个返回 json 数据的控制器。
用户必须进行身份验证才能查看此数据,因此我使用控制器的 [Authorize] 属性。
我希望得到一个错误 401 未授权请求我得到一个重定向 (302) 到登录页面。 在移动客户端中,将标头设置为仅接受“application/json”数据,但我仍然会重定向到登录页面。
我开发了一个可行的解决方案,但我对它不是很满意。它有效,但它是一种 hack。
有没有更好的解决方案来处理这个问题?
这是我的解决方案(在 Startup 类中配置方法)
//....Some Code
app.Use(async (context, next) =>
{
await next.Invoke();
if (context.Response.StatusCode == 302)
{
StringValues contentType;
if (context.Request.Headers.TryGetValue("Accept", out contentType)
&& contentType.Contains("application/json"))
{
context.Response.StatusCode = 401;
if (env.IsDevelopment())
await context.Response.WriteAsync("No Access");
}
}
});
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
【问题讨论】:
标签: c# asp.net asp.net-web-api asp.net-core-mvc