aspnetcore token authentication
1.0.0
用于配置自定义令牌身份验证的 ASP.NET Core 扩展
dotnet add package Wd3w.AspNetCore.TokenAuthentication
CustomTokenAuthService
无论您的身份验证基础设施是什么,只需实现此接口并将其注册为服务即可。
public class CustomTokenAuthService : ITokenAuthService
{
private CustomDb _db { get ; set ; }
public CustomTokenAuthService ( CustomDb db )
{
_db = db ;
}
public async Task < bool > IsValidateAsync ( string token )
{
return await _db . AccessTokens . AnyAsync ( accessToken => accessToken . Key == token ) ;
}
public async Task < ClaimsPrincipal > GetPrincipalAsync ( string token )
{
// Do create your own custom claims pricipal object and return them;
return new .. .
}
}
AddTokenAuthenticationScheme<TService>
将自定义令牌方案添加到身份验证构建器Realm
、 TokenLength
,这些属性是工作身份验证处理程序所需的属性。
services . AddAuthentication ( "Bearer" )
. AddTokenAuthenticationScheme < CustomTokenAuthService > ( "Bearer" , new TokenAuthenticationConfiguration
{
Realm = "www.example.com/sign-in" ,
TokenLength = 21 ,
// AuthenticationType = "Bearer" - this value is optional, default is from scheme parameter value.
} ) ;
AuthorizeAttribute
附加到您的控制器或操作方法。 [ ApiController ( "[controller]" ) ]
public class SomeController : ControllerBase
{
[ HttpGet ]
[ Authorize ]
public Task < ActionResult > GetSomethingAsync ( )
{
return Task . FromResult ( Ok ( ) ) ;
}
}
如果您需要提供自定义身份验证令牌验证消息,只需在ITokenAuthService.IsValidateAsync
上抛出AuthenticationFailException
public class CustomTokenAuthService : ITokenAuthService
{
public async Task < bool > IsValidateAsync ( string token )
{
throw new AuthenticationFailException ( "invalid_format" , "access token couldn't have any special characters." ) ;
}
}
此包版本控制策略遵循 AspNetCore 包版本。当有关于 AspNetCore 的新版本时,此包也会更新。
只有次要版本与 AspNetCore 不匹配,它将用于修复错误和一些更改。
麻省理工学院许可证
版权所有 (c) 2020 WDWWW
特此免费授予获得本软件和相关文档文件(“软件”)副本的任何人不受限制地使用本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或销售软件的副本,并允许向其提供软件的人员这样做,但须满足以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有者均不对因本软件或本软件中的使用或其他交易而产生或与之相关的任何索赔、损害或其他责任负责,无论是合同、侵权行为还是其他行为。软件。