我有一个带有自定义成员资格提供程序的ASP.NET MVC3应用程序。
我在web.config中指定了loginUrl,如下所示:
<forms loginUrl="~/SSO/LogOn" timeout="86400" slidingExpiration="true"/>
我想知道当用户点击他们没有访问权限的页面时我如何拦截此请求,以便我可以向此URL添加内容。
答案 0 :(得分:1)
假设您有一个名为SSO的Controller和一个名为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);
}
}
只需注释需要使用此属性进行授权的控制器/操作方法,它应该重定向到一个类似于以下内容的网址:
/ SSO / LogOn支持?appendedQueryStringParameter = someValue中