【问题标题】:Hiding User ID from URL in MVC在 MVC 中隐藏 URL 中的用户 ID
【发布时间】:2020-06-30 05:49:56
【问题描述】:

只是想知道是否可以在 MVC 中编辑 URL?

比如我在user id = 1下登录profile,所以生成的URL会是

https://something/Home/Profile?id=1

所以当用户编辑链接到

https://something/Home/Profile?id=2

他们将能够访问另一个用户个人资料

有没有可能实现

https://something/Home/Profile

这样用户将无法编辑链接

另一种情况是,当用户在 URL 中输入其他 id 时,该页面仍将保留在他们自己的个人资料页面上。

提前致谢!

【问题讨论】:

    标签: asp.net-mvc model-view-controller controller routes


    【解决方案1】:

    使用下面的代码隐藏url参数

        public ActionResult RedirectToProfile(string id)
        {
            TempData["UserId"] = id;
            return RedirectToAction("Profile");
        }
    
        public ActionResult Profile()
        {
            int id = Convert.ToInt32(TempData["UserId"]);
            //Do some stuff
            return View();
        }
    

    另一种解决方案是您可以加密查询字符串并在控制器端进行验证。

    希望对你有所帮助。

    如果对您有帮助,请标记为正确。

    【讨论】:

      【解决方案2】:

      您可以对已登录的用户配置文件执行此操作。

      HttpGet 调用 https://something/Home/Profile 并使用 Use Session 获取 loggedin 用户 ID。

      您不能隐藏查询参数。 使用 POST 而不是 GET 调用从 url 中删除参数。 您仍然可以在请求消息中看到参数。 安全隐藏参数的唯一方法是对其进行加密。

      【讨论】:

      • 目前我的用户 ID 已存储到 cookie 中。但是我们仍然需要将参数用户 ID 传递到 HTTP GET 的查询字符串中,所以它仍然会显示在 URL 中不是吗?对不起。我是新手。
      • 您无法隐藏此参数。使用 POST 而不是 GET 调用从 url 中删除参数。您仍然可以在请求消息中看到参数。安全隐藏参数的唯一方法是对其进行加密。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 2018-07-05
      • 2022-10-07
      • 2021-01-06
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      相关资源
      最近更新 更多