Fluent Security を使用して、DenyAnonymousAccess、DenyAuthenticationAccess、および RequireRole を使用して Web サイト アクセスを構成しました。
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 に違反している場合はリダイレクトする必要があります。
また、ユーザーがログオンしていないときにロールに関連付けられたリンクをクリックすると、処理されないバージョンの denyanonymousaccess 例外が発生します。構成と実装で何が間違っていますか??