Blazor集成JWT认证需前后端协同闭环:后端配置JWT中间件、提供登录接口签发Token;前端存储Token、自动携带、路由拦截、登出清理。

Blazor 集成 JWT 认证,核心是前后端协同:后端颁发并验证 Token,前端存储、携带、检查它。关键不在于写多少代码,而在于每个环节是否闭环——登录能取到 token、请求能自动带 token、路由能拦住未登录用户、登出能清干净。
.NET 8+ 的 Blazor Server 或 Web API 项目中,在 Program.cs 注册 JWT Bearer 认证服务:
AddAuthentication().AddJwtBearer(),指定 issuer、audience 和密钥(必须和生成 token 时一致)AddAuthorization(),后续才能用 [Authorize] 特性保护控制器或端点UseAuthentication() 必须在 UseAuthorization() 之前,且都在 UseRouting() 之后"Jwt": { "Key": "your-32-byte-secret-key-here", "Issuer": "myapp", "Audience": "myapp-users" }
新建一个 AuthController,暴露 POST /api/auth/login:
ClaimTypes.Name,可加 ClaimTypes.Role)SymmetricSecurityKey + SigningCredentials 签发 JwtSecurityToken
token、expiresIn(单位秒)、success 字段,方便前端处理Convert.FromBase64String() 安全加载Blazor WebAssembly 或 Server 均需在登录成功后持久化 token,并让所有受保护请求自动携带它:
localStorage.SetItemAsync("auth-token", token)(WASM)或 ProtectedSessionStore.SetAsync("auth-token", token)(Server)HttpClient(如 AuthorizedHttpClient),在构造时读取 token 并设为 Authorization: Bearer xxx 头NavigationManager.NavigateTo("/login", true) 强刷)仅靠 HTTP 请求头还不够,用户界面也要响应式隐藏/拦截:
<authorizeview></authorizeview> 包裹内容,内部分 <authorized></authorized>、<notauthorized></notauthorized>、<authorizing></authorizing> 三块<authorized roles="Admin"></authorized> 中指定,前提是后端签发的 token 含 role claim@page 指令下方加 @attribute [Authorize]
RedirectToLogin 组件,或在 App.razor 中统一处理 AuthenticationStateProvider 的状态变更基本上就这些。不复杂但容易忽略的是 token 过期刷新和并发请求的认证头一致性——如果要做进阶,再考虑 silent refresh 或 interceptor 拦截 401 后自动重试。
以上就是Blazor 怎么集成 JWT 认证的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号