[英]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.