要解决ASP.NET Core MVC的授权未完全正确工作的问题,需要检查以下几个方面:
services.AddAuthorization();
在Configure方法中,确保已添加了正确的授权中间件:
app.UseAuthorization();
[Authorize]
public class HomeController : Controller
{
// ...
}
或者,可以通过指定角色或策略来进行更细粒度的授权:
[Authorize(Roles = "Admin")]
public IActionResult AdminPage()
{
// ...
}
[Authorize(Policy = "MinimumAge")]
public IActionResult AgeRestrictedPage()
{
// ...
}
services.AddAuthorization(options =>
{
options.AddPolicy("MinimumAge", policy =>
policy.Requirements.Add(new MinimumAgeRequirement(18)));
});
其中,MinimumAgeRequirement是一个自定义的IAuthorizationRequirement实现,用于定义授权要求。
var claims = new List
{
new Claim(ClaimTypes.Name, "John"),
new Claim(ClaimTypes.Role, "Admin")
};
var identity = new ClaimsIdentity(claims, "MyAuthScheme");
var principal = new ClaimsPrincipal(identity);
await HttpContext.SignInAsync("MyAuthScheme", principal);
通过检查以上几个方面,应该能够解决ASP.NET Core MVC的授权未完全正确工作的问题。如果问题仍然存在,可以进一步调试和检查代码,以查找可能的错误。