我正在使用 VS 2019、带有 Razor Pages 的 ASP.Net Core 5(不是 MVC)。我有一个带有授权策略的简单 Razor 页面。下面是代码的摘录,我在这篇文章中对其进行了一些简化,并用文字替换了全局常量。
剃刀页面指令:
[授权(策略 = “AuthUsers”)]
Startup.cs 中描述了该策略
services.AddAuthorization(options =>
options.AddPolicy("AuthUsers", policy => policy.RequireClaim("Users")));
登录页面使用上述声明创建声明主体,如下所示:
var Claims = new List { new Claim(ClaimTypes.Email, Input.Email)) }; Claims.Add(new Claim("Users", "1")); var claimIdentity = new ClaimsIdentity(Claims, CookieAuthenticationDefaults.AuthenticationScheme); ClaimsPrincipal claimPrincipal = new ClaimsPrincipal(claimsIdentity);
成功登录后,我验证声明已正确设置,但每次我进入剃须刀页面时,它都会返回登录页面进行授权,即使用户已明确登录并且“注销”链接处于活动状态。