在ASP.Net Core 6 MVC中,使用自定义Principal时会遇到这个问题,因为默认的Authorize Filter无法识别自定义Principal。
要解决这个问题,可以通过自定义Filter来实现。首先,创建一个实现IAuthorizationFilter接口的自定义Filter,然后在此Filter的OnAuthorization方法中检查自定义Principal的身份验证,并设置HttpContext.User属性为自定义Principal。代码如下所示:
public class CustomAuthorizeFilter : IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
var principal = //Custom principal validation
if (principal != null)
{
context.HttpContext.User = principal;
}
else
{
context.Result = new ForbidResult();
}
}
}
然后,在需要验证授权的Controller或Action上添加此自定义Filter即可,代码如下所示:
[CustomAuthorizeFilter]
public class HomeController : Controller
{
//Controller actions
}
通过这种方法,就可以成功地在使用自定义Principal的ASP.Net Core 6 MVC应用中验证授权了。
上一篇:ASP.NetCore6MVC中一项操作有两条不同的路由路径。
下一篇:ASP.NETCORE6MVC(IdentityEntityFrameworkCoreVer6.0.8)中使用的密码哈希算法是什么?