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=somevalue

于 2012-06-27T05:28:26.227 回答