2012-02-14 107 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