2012-02-14 33 views
0

我新的窗體身份驗證時遇到這個問題的難度:窗體身份驗證 - 做一個GET請求保護

我有一個路線設置像這樣:

routes.MapRoute(
     "Account", // Route name 
     "Account", // URL with parameters 
     new { controller = "Account", action = "MyAccount", username = UrlParameter.Optional } // Parameter defaults 
); 

我的帳戶行動:

[Authorize] 
public ActionResult MyAccount(MyAccountModel model, string username) 
{ 
    // Do stuff with username and model 
} 

我注意到一個安全漏洞,用戶可以去:

../Account/MyAccount?username=test 

並指定任何用戶名以接收該用戶的信息。無論如何,我可以讓這個安全嗎?我需要將該用戶名傳遞給此方法以從我的自定義成員資格提供程序獲取內容

回答

3

聽起來像您想要執行的是測試用戶名是否與當前已通過身份驗證的用戶相同。這樣的事情:

[Authorize] 
public ActionResult MyAccount(MyAccountModel model, string username) 
{ 
    if (User.Identity.Name == username) 
    { 
     // Display account information 
    } 
} 
+0

嗨,好吧,我沒有意識到我可以使用User.Identity.Name。因此我不需要傳遞用戶名參數,並可以刪除該路線!謝謝! – CallumVass 2012-02-14 15:41:41