身份验证 – 禁止ASP.NET Core中的API URL重定向
发布时间:2020-05-23 20:21:44 所属栏目:asp.Net 来源:互联网
导读:我有一个ASP.NET Core站点,它对大多数页面使用cookie身份验证.对于那些页面,需要为未授权客户端提供302重定向的默认服务器响应.但是,该站点也接受API请求;他们使用API密钥,不使用cookie. 理想情况下,我想完全关闭API URL的cookie处理,但最低限度,我需要确保如
|
我有一个ASP.NET Core站点,它对大多数页面使用cookie身份验证.对于那些页面,需要为未授权客户端提供302重定向的默认服务器响应.但是,该站点也接受API请求;他们使用API密钥,不使用cookie. 理想情况下,我想完全关闭API URL的cookie处理,但最低限度,我需要确保如果API客户端未经授权,服务器不会响应302重定向. 解决方法仅当路径不是API时,才将重定向事件处理程序替换为使用默认行为的处理程序.在Startup.ConfigureServices中,添加以下内容:services.ConfigureApplicationCookie(options => {
options.Events.OnRedirectToAccessDenied = ReplaceRedirector(HttpStatusCode.Forbidden,options.Events.OnRedirectToAccessDenied);
options.Events.OnRedirectToLogin = ReplaceRedirector(HttpStatusCode.Unauthorized,options.Events.OnRedirectToLogin);
});
使用此帮助程序方法替换重定向方法: static Func<RedirectContext<CookieAuthenticationOptions>,Task> ReplaceRedirector(HttpStatusCode statusCode,Func<RedirectContext<CookieAuthenticationOptions>,Task> existingRedirector) =>
context => {
if (context.Request.Path.StartsWithSegments("/api")) {
context.Response.StatusCode = (int)statusCode;
return Task.CompletedTask;
}
return existingRedirector(context);
};
有了这个,API控制器方法可以调用Unauthorized()和Forbid()而不会导致重定向. 更新:以上是针对ASP.NET Core 2. code for ASP.NET Core 1是不同的. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-web-api – 如何创建角色并将用户添加到ASP.NET MV
- asp.net – 如何使我的Web应用程序无状态仍然做一些有用的事
- asp.net – .net网络应用程序中的异常处理
- asp.net-mvc – Asp.net MVC5,如何加载.hbs文件
- asp.net – SignalR,Owin和异常处理
- asp.net – 是否有可能检测到移动浏览器的GPS位置?
- asp.net-mvc – 在MVC中修改密码4
- asp.net-mvc – MVC的编码标准 – 它们是官方的吗?
- asp.net-mvc – 如何将ASP.Net MVC路径段中的1或0映射到布尔
- 我如何在ASP.NET MVC中使用Application_Error?
推荐文章
站长推荐
- asp.net – Owin Middleware vs ExceptionHandle
- 迁移经典ASP – Webforms或ASP.NET MVC?
- 如何在ASP.Net中将HTML页面转换为图像格式
- asp.net – system.web.compilation.debug与syst
- asp.net-web-api2 – Web Api 2 Post – UrlHelp
- asp.net-mvc – 单个控制器的MVC多个视图
- 使用ASP.NET成员资格提供程序的现成安全令牌服务
- asp.net – 存储库模式最佳实践
- asp.net-core – ASP.NET Core – Swashbuckle没
- ASP.Net,C#.Net和VB.Net之间的区别?
热点阅读
