[英]Restrict URL to specific database username ASP.NET
我正在使用 ASP.NET 框架制作一个网站工具 isch,它可以让用户/客户预览他们的网站。
我有一个简单的数据库,它收集SESSION["username"]
并使用客户项目文件的源创建一个。
但是,如果我有多个用户,我应该如何防止用户使用 URL 访问彼此的文件? 就像客户项目的目录是? "~/Customer/SESSION["username"]/Default.aspx
和user1在目录中进入user2,我把页面的一些内容贴在这里方便理解。
我的项目目录
在 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 中,我检查用户名是否 = 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 匹配。 预先感谢!
最好的问候马克斯
现在,我不知道你在做这个项目的背景,但似乎你对一些概念比较陌生,所以我只列出一些事情供你思考:
Session["username"] != "admin"
类的结构来限制对页面的访问是不好的事情,而且很容易出错。 在此处查看配置哪些用户或角色可以访问哪些页面的示例。在访问/Customer/user1/Default.aspx
时,我仍然不清楚您的代码的哪一部分处理/运行。 但我建议您,不要让用户名成为 URL 的一部分,而是从后端的 session 获取用户名,然后提供与该用户名匹配的正确页面:
/Customer/Default.aspx
username
并返回页面<username>/Default.aspx
(注意:这不是 URL,而是指向您正在服务的页面的文件路径或类似的东西 - 用户永远不会看到这个) 现在,用户将无法看到其他用户的页面,因为/Customer/user1/Default.aspx
不是有效的 URL - /Customer/Default.aspx
是。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.