我是表单身份验证的新手,我遇到了这个问题的困难:
我的路线设置如下:
routes.MapRoute(
"Account", // Route name
"Account", // URL with parameters
new { controller = "Account", action = "MyAccount", username = UrlParameter.Optional } // Parameter defaults
);
MyAccount行动:
[Authorize]
public ActionResult MyAccount(MyAccountModel model, string username)
{
// Do stuff with username and model
}
我注意到一个安全漏洞,用户可以去:
../Account/MyAccount?username=test
并指定用于接收该用户信息的任何用户名。无论如何我能保证这个安全吗?我需要将该用户名传递给此方法以从我的自定义成员资格提供程序中获取内容
答案 0 :(得分:3)
听起来你想要做的就是测试用户名是否等于当前经过身份验证的用户的用户名。像这样:
[Authorize]
public ActionResult MyAccount(MyAccountModel model, string username)
{
if (User.Identity.Name == username)
{
// Display account information
}
}