我有一個MVC應用程式,有一個簡單的登錄頁面。
在用戶成功驗證后,我用他們的詳細資訊填充會話變數,即 -
System.Web.HttpContext.Current.Session["usergroup"] = Convert.ToInt32(userDetails[0])。
System.Web.HttpContext.Current.Session["userid"] = Convert.ToInt32(userDetails[1])。
我有一個用戶類,像這樣-
public class MyUser
{
public int usergroup { get; set; }
public int userid { get; set; }
public static readonly MyUser default = new MyUser()
{
usergroup = 0,
userid = 0.
};
}
在會話變數被填充后,我使用這些變數來填充我的MyUser變數,即 -
MyUser.Default.usergroup = (Int32)System.Web.HttpContext.Current.Session["usergroup"/span>];
MyUser.Default.userid = (Int32)System.Web.HttpContext.Current.Session["userid"];
登錄和退出,切換用戶在我的設計筆記本電腦上作業正常。
我的問題是,我已經在我的網路上的一個單獨的測驗筆記本電腦上設定了一個IIS應用程式,并在該筆記本電腦上以用戶1的身份登錄。(url是localhost/MyApp)
。然后為了測驗多用戶功能,在測驗筆記本電腦上,我以用戶2的身份登錄(其中的url是http://{MY.NETWORK.IP}/MyApp)。
我能夠以用戶 2 的身份正常登錄,但是如果我回到測驗筆記本電腦并重繪 螢屏,即使我仍以用戶 1 的身份登錄,用戶 2 的資訊也是可訪問和可見的!
我的會話變數是以用戶 2 的身份登錄的。
我的會話變數在每次用戶(不管是哪臺機器)登錄時都會被重置,我如何才能阻止這種情況的發生?
我讀了很多書,看到有人通過在IIS中創建一條規則來停止快取,但這對我來說毫無作用。還有人說要使用兩個獨立的瀏覽器,但這也是1.什么都沒有做,2.與我無關,因為我在兩個完全獨立的機器上。
uj5u.com熱心網友回復:
網路應用程式是一個單一的應用程式,為多個用戶服務。
作為一個單一的應用程式意味著任何靜態值都會被所有用戶共享。因此,當您在登錄后更改您的public static readonly MyUser Default的屬性時,所有用戶現在看到的是同一個用戶。
如果你不想在你的代碼中做System.Web.HttpContext.Current.Session["usergroup"](我也不想),那么你可以把它包在一些類中:
public class MySession
{
public int Usergroup
{
get => (int)System.Web.HttpContext.Current.Session["usergroup"/span>] 。
set => System.Web.HttpContext.Current.Session["usergroup"] =value。
}
//etc; }
}
由于這本身并不存盤資料,你甚至可以把它變成一個靜態類。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/307744.html
標籤:
下一篇:我想知道為什么我會得到這個錯誤?
