Edi.AspNetCore.Jwt.SqlServer
0.10.0
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Edi.AspNetCore.Jwt.SqlServer --version 0.10.0
NuGet\Install-Package Edi.AspNetCore.Jwt.SqlServer -Version 0.10.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Edi.AspNetCore.Jwt.SqlServer" Version="0.10.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Edi.AspNetCore.Jwt.SqlServer" Version="0.10.0" />
<PackageReference Include="Edi.AspNetCore.Jwt.SqlServer" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Edi.AspNetCore.Jwt.SqlServer --version 0.10.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Edi.AspNetCore.Jwt.SqlServer, 0.10.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Edi.AspNetCore.Jwt.SqlServer@0.10.0
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Edi.AspNetCore.Jwt.SqlServer&version=0.10.0
#tool nuget:?package=Edi.AspNetCore.Jwt.SqlServer&version=0.10.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Edi.AspNetCore.Jwt
JWT authentication library for my own
Install from NuGet
dotnet add package Edi.AspNetCore.Jwt.InMemory --version 0.10.0-beta.8
or
dotnet add package Edi.AspNetCore.Jwt.SqlServer --version 0.10.0-beta.8
Usage
ASP.NET Core
Program.cs
builder.Services.AddJwtAuth<DefaultJwtAuthManager>(builder.Configuration)
.AddInMemoryRefreshTokenStore();
// or .AddSqlServerRefreshTokenStore("DefaultConnection");
appsettings.json
"JWTConfig": {
"Secret": "b9e942ac-dd01-4523-9e0e-21f4f642fe74",
"Issuer": "edi.wang",
"Audience": "edi",
"AccessTokenExpiration": 20,
"RefreshTokenExpiration": 480
}
or with
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=work996;Trusted_Connection=True;"
}
DI
private readonly IJwtAuthManager _jwtAuthManager;
public AccountController(IJwtAuthManager jwtAuthManager)
{
_jwtAuthManager = jwtAuthManager;
}
Sign In
var claims = new List<Claim>
{
new("UserId", user.Id.ToString()),
new(ClaimTypes.Name, user.DisplayName),
new(ClaimTypes.Email, request.Email),
};
claims.AddRange(user.Roles.Select(role => (Claim)new(ClaimTypes.Role, role.ShortCode)));
var jwtResult = _jwtAuthManager.GenerateTokens(request.Email, claims.ToArray(), DateTime.UtcNow);
SetRefreshTokenCookie(jwtResult.RefreshToken.TokenString);
return Ok(new LoginResult
{
AccessToken = jwtResult.AccessToken.TokenString
});
private void SetRefreshTokenCookie(string token)
{
var cookieOptions = new CookieOptions
{
Secure = true,
SameSite = SameSiteMode.None,
HttpOnly = true,
Expires = DateTime.UtcNow.AddMinutes(_jwtAuthManager.JwtTokenConfig.RefreshTokenExpiration)
};
Response.Cookies.Append("refreshToken", token, cookieOptions);
}
Refresh Token
var refreshToken = Request.Cookies["refreshToken"];
var hasAuthHeader = Request.Headers.TryGetValue("Authorization", out var authHeaderValue);
if (!hasAuthHeader) return Unauthorized("No Authorization header");
var parseAuthHeader = AuthenticationHeaderValue.TryParse(authHeaderValue, out var accessToken);
if (!parseAuthHeader) return Unauthorized("Unable to parse Authorization header");
var jwtResult = _jwtAuthManager.Refresh(refreshToken, accessToken.Parameter, ClaimTypes.Email, DateTime.UtcNow);
SetRefreshTokenCookie(jwtResult.RefreshToken.TokenString);
return Ok(jwtResult);
Sign Out
var email = User.FindFirst(p => p.Type == ClaimTypes.Email)?.Value;
_jwtAuthManager.RemoveRefreshToken(email);
免责申明
此项目(Edi.AspNetCore.Jwt)及其配套组件均为免费开源的产品,仅用于学习交流,并且不直接向中国提供服务,中国用户请于下载后立即删除。
任何中国境内的组织及个人不得使用此项目(Edi.AspNetCore.Jwt)及其配套组件构建任何形式的面向中国境内用户的网站或服务。
不可用于任何违反中华人民共和国(含台湾省)或使用者所在地区法律法规的用途。
因为作者即本人仅完成代码的开发和开源活动(开源即任何人都可以下载使用),从未参与用户的任何运营和盈利活动。
且不知晓用户后续将程序源代码用于何种用途,故用户使用过程中所带来的任何法律责任即由用户自己承担。
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- Edi.AspNetCore.Jwt (>= 0.10.0)
- Microsoft.Data.SqlClient (>= 5.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.4.5 | 122 | 5/13/2026 |
| 1.4.4 | 128 | 4/16/2026 |
| 1.4.3 | 130 | 3/10/2026 |
| 1.4.2 | 136 | 2/11/2026 |
| 1.4.1 | 134 | 1/14/2026 |
| 1.4.0 | 333 | 11/14/2025 |
| 1.3.6 | 216 | 9/12/2025 |
| 1.3.5 | 313 | 8/6/2025 |
| 1.3.4 | 459 | 7/25/2025 |
| 1.3.3 | 225 | 6/20/2025 |
| 1.3.2 | 237 | 5/21/2025 |
| 1.3.1 | 203 | 2/27/2025 |
| 1.3.0 | 200 | 11/13/2024 |
| 1.2.1 | 205 | 10/28/2024 |
| 1.2.0 | 221 | 9/24/2024 |
| 1.0.1 | 210 | 9/24/2024 |
| 1.0.0 | 235 | 8/15/2024 |
| 0.12.1 | 188 | 8/5/2024 |
| 0.10.0 | 220 | 4/24/2024 |
Loading failed