使用 RequireClaim 方法来要求用户的 userType 声明必须为 "system",即只有带有 "system" 用户类型声明的用户才能访问该授权策略
注意演示用的 Claim
c#public string GenerateJwtToken(string userId, string userType)
{
var claims = new List<Claim>
{
new Claim("userId", userId),
new Claim("userType", userType)
};
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("your_secret_key"));
var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
claims: claims,
expires: DateTime.UtcNow.AddHours(1),
signingCredentials: credentials
);
return new JwtSecurityTokenHandler().WriteToken(token);
}
产生token
var systemUserToken = GenerateJwtToken(systemUserId, "system"); var regularUserToken = GenerateJwtToken(regularUserId, "regular"); ``` 离开了一线自己创业,有些东西会随着时间的推移遗忘,避免用到的时候发挥时间找资料,弄个白痴都能看懂的备忘录 - 接口定义授权策略 ` [Authorize(Policy = "SystemUserOnly")] ` - 配置 ```c# public void ConfigureServices(IServiceCollection services) { // 添加授权策略 services.AddAuthorization(options => { options.AddPolicy("SystemUserOnly", policy => { policy.RequireClaim("userType", "system"); }); }); // 其他服务配置... } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { // 其他中间件配置... // 添加身份验证和授权中间件 app.UseAuthentication(); app.UseAuthorization(); // 其他路由配置... }
本文作者:宁骑
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!