使用 Fluent Security,我已经使用 DenyAnonymousAccess、DenyAuthenticationAccess 和 RequireRole 配置了网站访问。
SecurityConfigurator.Configure(configuration =>
{
configuration.ResolveServicesUsing(new FluentSecurityServiceLocator());
configuration.GetAuthenticationStatusFrom(CurrentUser.IsAuthenticated);
configuration.GetRolesFrom(CurrentUser.Roles);
configuration.For<HomeController>().DenyAnonymousAccess();
configuration.For<ReportsController>().RequireRole(UserRole.Administrator);
configuration.For<AccountController>().DenyAuthenticatedAccess();
configuration.For<AccountController>(x => x.ChangePassword()).DenyAnonymousAccess();
});
我已经处理了 DenyAnonymousAccess 的 PolictyViolationException 并重定向到登录页面。
public ActionResult Handle(PolicyViolationException exception)
{
return new RedirectToRouteResult(
new RouteValueDictionary(new { action = "Login", controller = "Account" })
);
}
但我不确定从 RequireRole 捕获异常是否是同一个过程?如果违反了 RequireRole,我需要重定向。
此外,当用户未登录并单击附加到角色的链接时,我会得到未处理版本的拒绝匿名访问异常。我在配置和实现中做错了什么?