1

カスタム メンバーシップ プロバイダーを使用する ASP.NET MVC3 アプリケーションがあります。

次のように、web.config で loginUrl を指定しています。

<forms loginUrl="~/SSO/LogOn" timeout="86400" slidingExpiration="true"/>

ユーザーがアクセス権を持っていないページにアクセスしたときに、このリクエストをどのようにインターセプトして、この URL に何かを追加できるのか疑問に思いました。

4

1 に答える 1

1

SSO と呼ばれるコントローラーと LogOn と呼ばれるアクション メソッドがあると仮定すると、AuthorizeAttribute を拡張するだけでよいと思います。

public class AppendingAuthorizeAttribute : AuthorizeAttribute
{        
    protected override void HandleUnauthorizedRequest(AuthorizationContext context)
    {
        var url = new UrlHelper(context.RequestContext);
        var logonUrl = url.Action("LogOn", "SSO", new {appendedQueryStringParameter = "somevalue"});
        filterContext.Result = new RedirectResult(logonUrl);
    }
}

この属性で承認が必要なコントローラー/アクション メソッドに注釈を付けるだけで、次のような URL にリダイレクトする必要があります。

/SSO/LogOn?appendedQueryStringParameter=何らかの値

于 2012-06-27T05:28:26.227 に答える