我想要兩種身份驗證方式,首先是移動應用程式的 jwt,其次是管理員的 cookie。我不明白為什么它不起作用。也許沖突。
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = "some",
ValidAudience = "some",
IssuerSigningKey = signingDecodingKey.GetKey(),
};
})
.AddCookie("Admin_Scheme", options =>
{
options.LoginPath = new PathString("/Admin/Auth/Login");
});
但如果我對此發表評論:
services.AddAuthentication("Admin_Scheme")
//.AddJwtBearer(options =>
//{
// options.TokenValidationParameters = new TokenValidationParameters
// {
// ValidateIssuer = true,
// ValidateAudience = true,
// ValidateLifetime = true,
// ValidateIssuerSigningKey = true,
// ValidIssuer = "MobileTLServer",
// ValidAudience = "MobileTLClient",
// IssuerSigningKey = signingDecodingKey.GetKey(),
// };
//})
.AddCookie("Admin_Scheme", options => // конфигурации cookie аутентификации
{
options.LoginPath = new PathString("/Admin/Auth/Login");
});
一切都很好。
我不明白我錯在哪里。
這是我的 AuthService:
//default claims
var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim(ClaimsIdentity.DefaultNameClaimType, user.Name),
new Claim(ClaimsIdentity.DefaultRoleClaimType, "Manager"),
};
//Permissions
var permissions = await _context.PermissonRoles
.Include(pr => pr.Permission)
.Where(pr => pr.IdRole == user.Role.Id)
.Select(pr => pr.Permission)
.ToListAsync();
//Fill data
foreach (var permission in permissions)
{
claims.Add(new Claim("Permission", permission.PermissionCode));
}
var claimsIdentity = new ClaimsIdentity(claims, "Token", ClaimsIdentity.DefaultNameClaimType, ClaimsIdentity.DefaultRoleClaimType);
await HttpContext.SignInAsync("Admin_Scheme", new ClaimsPrincipal(claimsIdentity),
new AuthenticationProperties
{
ExpiresUtc = DateTime.UtcNow.AddMinutes(60),
IsPersistent = true
});
這個網站希望我添加更多資訊,但我不知道我可以添加什么。
uj5u.com熱心網友回復:
根據您的描述,我猜您可能沒有為 cookie 設定授權屬性 AuthenticationSchemes,因為您的默認 Schemes 更改為 JWT,這意味著如果您不指定 AuthenticationSchemes,它將使用 JWT 令牌。如果您使用 cookie 令牌,它將不起作用。
關于如何設定 Authorize AuthenticationSchemes 的更多細節,您可以參考以下代碼:
[Authorize( AuthenticationSchemes = "Admin_Scheme")]
public class HomeController : Controller
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/328738.html
