2011-03-30 60 views
4

我是新來的asp.net mvc,我需要檢查用戶是否登錄或不在我的應用程序,所以我把下面的一段代碼我的Global.asaxasp.net mvc並檢查用戶是否登錄

void Application_PreRequestHandlerExecute(object sender, EventArgs e) 
    { 
     HttpApplication application = (HttpApplication)sender; 
     HttpContext context = application.Context; 

     string filePath= context.Request.FilePath; 
     string fileExtention = VirtualPathUtility.GetExtension(filePath); 

     // to skip request for static content like (.css or .js) 
     if (fileExtention == "") 
     {     
      if (filePath.ToLower() != "/account/login") 
      { 
       var user = (Utilisateur)context.Session["USER"]; 
       if (user == null) 
        context.Response.Redirect(@"~/account/login"); 
      }     
     } 
    } 

我截取每個傳入請求做,我想知道是否有其他方法可以做到這方面的工作 和感謝提前檢查。

回答

23

你需要這樣做嗎?你應該檢查,如果你可以使用asp.net認證,授權和會員提供商。 (當您創建新的ASP.NET MVC 3應用程序時(當您離開'Internet應用程序'選項時),它們會自動生成)。 (授權用戶或角色=「管理員」)(授權(角色=「管理員」)(授權(角色=「管理員「)]

[Authorize] 
controller{.....} 

而要檢查用戶是否已登錄,則已有用戶屬性和身份屬性。
此代碼檢查,如果用戶進行身份驗證(登錄):

controller...() { 
... 
if (User.Identity.IsAuthenticated) ... 
... 
} 
+0

我不使用asp.net身份驗證我正在寫我自己的模塊,這將與sevral數據庫,並且授權不會硬編碼,在這一刻我只是尋找檢查用戶是否在一個身份驗證在我的應用程序中,爲任何請求,爲什麼我使用global.asax – anouar 2011-03-30 10:20:22

2

既然你提到你有自己的「模塊」,與多個數據庫的工作,我想你應該執行這個模塊作爲標準ASP.NET/MVC自定義成員/身份驗證提供程序。然後,您可以使用HttpContext.User.Identity.IsAuthenticated並通過使用[Authorize]屬性對其進行裝飾來限制對控制器操作(或整個控制器)的訪問。

+0

謝謝我會看看 – anouar 2011-03-30 12:23:06

+0

如何表和存儲過程,保存用戶和角色的信息,我應該創建自己的Postgres,MySQL? – anouar 2011-03-30 12:36:21