在Session_Start事件中,它調用authenticate_authorize類來返回AuthResult對象。Session_Start中的Request.RedirectToRoute導致會話重啓
public AuthResult
{
public enumAuthResult Result {get;set;}
public string Controller {get;set;}
public string Action {get;set;}
}
什麼是在Session_Start事件中調用控制器動作而不使用重定向的正確方法?
我應該將Application_AuthenticateRequest和Application_AuthorizeRequest事件中的認證和授權分開嗎?
如果身份驗證和授權是在單獨的事件中完成的,如何將AuthResult對象傳遞給Session_Start事件以便它能夠正確地重定向或路由到控制器?
Response.RedirectToRoute(AuthResult.Controller, AuthResult.Action);
Response.Redirect(string.Format("{0}/{1}",AuthResult.Controller, AuthResult.Action));
謝謝。我正嘗試在早期應用程序管道(如會話啓動)中執行一次身份驗證和授權。使用Authroization Filter將迫使我用這個屬性來修飾每個控制器。我們在IIS網站下有很多應用程序。我甚至計劃在執行MVC處理程序之前編寫HttpModule來攔截站點級別的請求,以便我們可以系統地在站點級別強制執行身份驗證/授權,並防止每個應用程序開發人員在他們的應用程序代碼中執行這種平凡的任務。 – user266909
您不需要使用AuthorizeAttribute來修飾每個控制器操作。您可以將其註冊爲FilterConfig文件中的全局過濾器一次。實際上,這是推薦的方式 - 然後使用AllowAnonymous atttribute選擇性地允許部分站點不需要安全性。 – NightOwl888