我听说允许用户提交带有用户ID的表单并不是一个好的安全措施。这让我相信允许在url中看到用户id是不好的做法。但我需要一种方法来允许用户查看其他用户个人资料。
我想知道,而不是使用
@Html.ActionLink("Details", "Details", new { id = item.Id })
如果我应该使用
@Html.ActionLink("Details", "Details", new { id = item.username })
然后在控制器中按用户名查找用户并返回用户。
这是解决这个问题的正确方法吗?
现在是我的链接
@Html.ActionLink(person.FullName, "Details","User" , new { UserName = person.UserName }, null)
现在是我的控制器动作
// GET: /User/Details?UserName=bbob
public ActionResult Details(string UserName)
{
if (UserName == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
ApplicationUser aspnetuser = UserManager.FindByName(UserName);
if (aspnetuser == null)
{
return HttpNotFound();
}
return View(aspnetuser);
}
答案 0 :(得分:5)
我更喜欢用户名方法,因为它消除了如果您已经知道用户名则必须查找Id的要求,并且还使用户通过迭代可能的列表来“浏览”用户信息变得更加困难IDS。
而且这个问题可能会被标记出来。 :)