私の C# MVC4 アプリケーションでは、Active Directory でフォーム ベース認証を使用しています。カスタム AD メンバーシップ プロバイダーがあります。ユーザーが属するグループを読み取って確認できることをテストしました。今、私は次のことを行うカスタム承認属性を作成しようとしています:
if (user is logged-in/not timed-out/authenticated)
{
if (user's role is equal to role 1 or role 2)
{
return a specific view or (preferably) perform a specific redirect to action
}
else
{
return a different specific view or (preferably) perform a different specific redirect to action
}
}
else
{
return View
}
これが私がこれまでに持っているものです:
public class AuthorizeEditAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext.Request.IsAuthenticated)
{
if ((httpContext.User.IsInRole("group1")) || (httpContext.User.IsInRole("group2")))
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
リダイレクトタスクも実行する方法がわかりません。リダイレクトの方法について説明しているこの投稿を見てきましたが、これをこれまでの内容と統合する方法がわかりません。具体的には、実行する最初のチェックで AuthorizeCore を使用して httpcontext.user にアクセスする必要があると考えており、目的のパスに沿って渡されているように見えることを行うために必要なタイプ AuthorizationContext の別のパラメーターを渡す方法がわからないためです。リダイレクト。