0

我正在使用 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);

成功登录后,我验证声明已正确设置,但每次我进入剃须刀页面时,它都会返回登录页面进行授权,即使用户已明确登录并且“注销”链接处于活动状态。

4

1 回答 1

0

检查您是否按此顺序排列这些行:

app.UseAuthentication();
app.UseAuthorization();

反过来像这样:

app.UseAuthorization();
app.UseAuthentication();

是对您描述的行为的解释。成功验证登录后,您将永远不会获得授权。

于 2021-09-11T07:09:09.510 回答