3

我听说允许用户提交带有用户 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);
    }
4

1 回答 1

5

我更喜欢 Username 方法,因为如果您已经知道用户名,它就无需查找 Id,而且它还使用户更难通过遍历可能的 id 列表来“浏览”用户信息。

而且这个问题可能会被标记。:)

于 2013-11-04T17:25:44.417 回答