【发布时间】:2021-06-11 13:22:08
【问题描述】:
我正在使用 ASP.NET Framework 制作一个网站工具 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 值与当前会话匹配。先谢谢了!
最好的问候马克斯
【问题讨论】:
-
你使用授权
-
怎么样?我在哪里授权?在服务器上还是在实际网站上?
-
从您提供需要限制的页面的任何位置。
-
所以基本上我想根据用户名限制所有页面。唯一的例外是有权访问所有页面的用户管理员。我在哪里可以输入授权码?页面加载?别的地方? web.config?
-
您必须分享更多有关您正在构建的系统的信息,以供任何人告知。我猜你正在使用 ASP.NET,但没有描述。人们如何在您的网站上进行身份验证?请花一些时间在互联网上搜索如何为您正在构建的系统添加授权,然后分享您尝试过的代码。