我有一個帶有自定義成員資格提供程序的ASP.NET MVC3應用程序。如果用戶不在角色中,則偵聽請求
我在web.config中指定的loginUrl如下:
<forms loginUrl="~/SSO/LogOn" timeout="86400" slidingExpiration="true"/>
我想知道,當用戶點擊一個網頁,我可以怎麼截獲這個請求,他們沒有訪問權限,所以我可以附加一些東西到這個URL。
我有一個帶有自定義成員資格提供程序的ASP.NET MVC3應用程序。如果用戶不在角色中,則偵聽請求
我在web.config中指定的loginUrl如下:
<forms loginUrl="~/SSO/LogOn" timeout="86400" slidingExpiration="true"/>
我想知道,當用戶點擊一個網頁,我可以怎麼截獲這個請求,他們沒有訪問權限,所以我可以附加一些東西到這個URL。
假設你有一個名爲SSO控制器,並呼籲登錄時爲其行動的方法,我想你只需要延長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);
}
}
只是註釋需要授權的具有這種屬性的控制器/ action方法,它應該重定向到URL看起來像:
/SSO/LogOn支持appendedQueryStringParameter = someValue中
這真的很有用,謝謝。有沒有辦法來覆蓋現有的授權屬性? – Nick
顯然你可以用相同的名稱覆蓋它,而MVC將使用它來代替默認的:[http://stackoverflow.com/a/5844884/968301](http://stackoverflow.com/a/5844884/968301 ) –
你想牛逼o根據您網站中的目標網址向SSO攔截請求? – YavgenyP
@YavgenyP這是更有說服力的措詞,是的! – Nick