asp.net core AuthenticationMiddleware 在WebApi中的的使用
来源:互联网 发布:linux 自动启动服务 编辑:程序博客网 时间:2024/05/29 04:39
在.net framework 4.5架构下使用认证(Authentication)授权(Authorization)。
IIS使用HttpModule进行认证(Authentication),我们可以选择自己实现认证方式并在web.config中配置,当然也可以选择IIS默认提供的几种实现,这里不再继续展开讨论。
asp.net core默认提供了几种默认的实现方式,包括Identity,Facebook, Google, Microsoft Account, Twitter 等等。这里介绍Basic Authentication认证方式。asp.net core的请求通道由一系列的请求委托组成,一个一个顺序执行。
实现Basic Authentication最简单的方式是添加一个中间件。新建文件BasicAuthenticationMiddlerware
public sealed class BasicAuthenticationMiddlerware
{
private readonly RequestDelegate _next;
public BasicAuthenticationMiddlerware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
string authentication = context.Request.Headers["Authorization"];
if (authentication != null && authentication.Contains("Basic"))
{
//Extract credentials
var usernamePasswordStr = authentication.Trim().Split(" ")[1];
var userNamAndPasswordArr = usernamePasswordStr.Split(':');
if (userNamAndPasswordArr.Length != 2)
{
context.Response.StatusCode = 401;
}
var username = userNamAndPasswordArr[0];
var password = userNamAndPasswordArr[1];
/*
* 根据用户账号密码验证用户有效性
* 如果有效
* 执行 await _next.Invoke(context);
* 否则
* context.Response.StatusCode = 401;
*/
if (true)
{
await _next.Invoke(context);
}
else
{
context.Response.StatusCode = 401;
}
}
else
{
context.Response.StatusCode = 401;
}
}
}
完成中间件的定义以后,在Startup.cs文件的Configure方法中注册中间件以开启验证。注意,这里一定要添加在app.UseMvc()之前。
app.UseMiddleware<BasicAuthenticationMiddlerware>();
或者通过添加IApplicationBuilder的扩张方法,再用扩展方法进行注册。代码如下
public static class BasicAuthenticationMiddlerwareExtension
{
public static IApplicationBuilder UseBasicAuthenticationMiddlerware(
this IApplicationBuilder builder)
{
return builder.UseMiddleware<BasicAuthenticationMiddlerware>();
}
}
Startup.cs的Configure的内容如下
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseBasicAuthenticationMiddlerware();
app.UseMvc();
}
启动WebApi。不添加头文件Authorization,如预期返回401状态码。
添加头部信息,如预期返回数据。
原文地址:http://www.cnblogs.com/Zhang-Xiang/p/7536803.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
- asp.net core AuthenticationMiddleware 在WebApi中的的使用
- ASP.NET MVC的WebApi使用
- Asp.net Core WebApi--(1)环境搭建
- asp.net core WebAPI实现CRUD
- 在ASP.NET MVC中使用WebApi注册路由注意事项
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(二)-- Web Api Demo
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(一)-- 起步
- 《Asp.Net Web API》-----webApi的简单使用
- Swagger在WebApi中的使用
- ASP.NET Core MVC-WebAPi如何构建路由?
- ASP.NET Core MVC-WebAPi如何构建路由?
- ASP.NET Core MVC-WebAPi如何构建路由?
- ASP.NET Core MVC-WebAPi如何构建路由?
- ASP.NET Core MVC/WebAPi 模型绑定探索
- ASP.NET Core MVC/WebAPi 模型绑定探索
- ASP.Net Core WebApi几种版本控制对比
- ASP.Net Core WebApi几种版本控制对比
- ASP.Net Core WebApi几种版本控制对比
- web前端的一些小知识
- Entity Framework中的字符串插值引发担忧
- Java多线程系列--“JUC集合”03之 CopyOnWriteArraySet
- ASP.NET Core 运行原理剖析
- WebSocket In ASP.NET Core(二)
- asp.net core AuthenticationMiddleware 在WebApi中的的使用
- Configuration Extensions
- 手把手教你使用spring cloud+dotnet core搭建微服务架构:服务治理(-)
- 为什么你需要将代码迁移到ASP.NET Core 2.0?
- 基于Office 365的随需应变业务应用平台
- 跨平台应用集成(在ASP.NET Core MVC 应用程序中集成 Microsoft Graph)
- 程序员也应该有点艺术范儿,不要把“老年代”叫成“Old Generation”
- Oracle11G数据泵expdp/impdp使用并行与压缩技术备份与恢复
- [深度学习] (3)- Keras实现一个简单的翻译器( 从数字到对应的英文 )