gpt4 book ai didi

c# - 将 URL 限制为特定的数据库用户名 ASP.NET

转载 作者:行者123 更新时间:2023-12-04 07:57:37 24 4
gpt4 key购买 nike

我正在使用 ASP.NET Framework 制作一个网站工具 isch,它可以让用户/客户预览他们的网站。
我有一个收集 SESSION["username"] 的简单数据库并使用客户项目文件的源创建一个。
但是如果我有多个用户,我应该如何阻止用户使用 URL 访问彼此的文件?就像客户项目的目录是? "~/Customer/SESSION["username"]/Default.aspx而 user1 则在目录中输入 user2。我会在这里发布页面的一些内容,以便更容易理解。
我的项目目录
Directory of my project
在 Default.aspx 页面中,我指示所有不是用户“admin”的人。在 Default.aspx 中,我有一个看起来像这样的 IFrame <iframe id="contentPanel1" runat="server" />它从我的 Default.aspx.cs 获取其 src 属性,如下所示:

using System;
using System.Web.UI;


namespace MyFeedbackWebsite
{
public partial class _Default : Page
{

protected void Page_Load(object sender, EventArgs e)
{



if (Session["username"] == null)
{
Response.Redirect("~/login");
}

if ((string)Session["username"] == "admin")
{
Response.Redirect("~/admin");
}

this.contentPanel1.Attributes["src"] = "https://localhost:44350/Customer/" + Session["username"].ToString();
}
}


}
在我的 Admin.aspx.cs 中,我检查 username = admin 以及用户是否已登录:
using System;

namespace MyFeedbackWebsite
{
public partial class admin : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if ((string)Session["username"] == null)
{
Response.Redirect("~/Login");
}

if ((string)Session["username"] != "admin")
{
Response.Redirect("~/Default");
}
}
}
}
而在 /Customer/我希望客户项目所在的目录。但正如我所提到的,如果目录是 /Customer/user1/Default.aspx我希望 user1 值与当前 session 匹配。先谢谢了!
最好的问候马克斯

最佳答案

一些观察
现在,我不知道您正在从事的这个项目的背景,但您似乎对某些概念还比较陌生,因此我将列出一些事项供您考虑:

  • 如果这是一个新项目,我强烈建议您停下来看看 ASP.NET Core 或类似项目。 .NET Framework 正在慢慢被 .NET Core 取代,因此基于 .NET Framework 的新项目(例如 ASP.NET Web Forms)很快就会过时(如果它从一开始就不是)。
  • 如果这只是一个业余时间/个人小项目,一切都很好(除了上述一点)——玩它是一种很好的学习方式。但是,如果这是一个商业或其他严肃项目,我建议您阅读 Web 应用程序中的安全最佳实践。使用类似 Session["username"] != "admin" 的结构限制对页面的访问生意不好,很容易出错。 Take a look here有关配置哪些用户或角色可以访问哪些页面的示例。

  • 有问题的问题
    我仍然有点不清楚访问 /Customer/user1/Default.aspx 时您的代码的哪一部分处理/运行.但我建议您,不要将用户名作为 URL 的一部分,而是从后端的 session 中获取用户名,然后提供与该用户名匹配的正确页面:
  • 用户访问 URL /Customer/Default.aspx
  • 后端验证用户是否登录。如果没有,用户将被重定向到登录页面
  • 后端获取 username从 session 并返回页面 <username>/Default.aspx (注意:这不是一个 URL,而是一个文件路径或类似的东西,指向你正在服务的页面 - 用户永远不会看到这个)

  • 现在,用户将无法看到其他用户的页面,因为 /Customer/user1/Default.aspx 不是 有效的 URL - /Customer/Default.aspx是。

    关于c# - 将 URL 限制为特定的数据库用户名 ASP.NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66618298/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com