第一步在登錄頁面
public ActionResult login(string url)
{
if (Session["UserId"] != null && Session["UserId"].ToString() != "")//這個根據自己的開發項目編寫,這個是判斷seesion用戶是否存在
return Redirect("index");
else
{
if (Request.Cookies["__LOGINCOOKIE__"] == null || Request.Cookies["__LOGINCOOKIE__"].Value == "")
{
Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, "Test", DateTime.Now, DateTime.Now.AddSeconds(5), false, "");
string encryptedText = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(new HttpCookie("__LOGINCOOKIE__", encryptedText));
return Redirect("login");
}
else
{
Response.Cookies.Add(new HttpCookie("__LOGINCOOKIE__", ""));
}
}
ViewBag.url = url;
return View();
}
第二步配置web.config
<sessionState mode="StateServer" cookieless="UseUri" regenerateExpiredSessionId="true" stateNetworkTimeout="120" timeout="120"></sessionState>
只要兩步設置好,同一個瀏覽器登陸兩個賬號,兩個賬號不會串聯。
sessionState參數說明:
屬性 |
說明 |
||||||||||||
allowCustomSqlDatabase |
可選的 Boolean 屬性。 指定會話狀態 SQL 數據庫是否可以是自定義數據庫(而不是 ASP.NET 默認數據庫)。如果爲 false,則不能指定初始目錄或數據庫作爲 sqlConnectionString 屬性的值。默認會話狀態 SQL 數據庫爲 ASPState 數據庫。有關更多信息,請參見會話狀態模式。 此屬性是 .NET Framework 2.0 版中的新屬性。 默認值爲 false。 |
||||||||||||
cookieless |
可選的 HttpCookieMode 屬性。 指定對於 Web 應用程序使用 Cookie 的方式。 cookieless 屬性可以爲下列可能值之一。默認值爲 UseCookies。
|
||||||||||||
cookieName |
可選的 String 屬性。 指定存儲會話標識符的 Cookie 的名稱。 此屬性是 .NET Framework 2.0 版中的新屬性。 默認值爲 "ASP.NET_SessionId"。 |
||||||||||||
customProvider |
可選的 String 屬性。 指定用於存儲和檢索會話狀態數據的自定義會話狀態提供程序的名稱。該提供程序在 providers 元素中指定。僅當會話狀態模式設置爲 Custom 值時,才使用該提供程序。有關更多信息,請參見會話狀態模式。 此屬性是 .NET Framework 2.0 版中的新屬性。 默認值爲空字符串 ("")。 |
||||||||||||
mode |
可選的 SessionStateMode 屬性。 指定存儲會話狀態值的位置。有關更多信息,請參見會話狀態模式。 mode 屬性可以爲下列可能值之一。默認值爲 InProc。
|
||||||||||||
partitionResolverType |
可選的 String 屬性。 指定在哪裏存儲會話狀態。如果 partitionResolverType 屬性中指定了值,則忽略 sqlConnectionString 和 stateConnectionString 屬性。PartitionResolverType 屬性返回的連接字符串將用於每個請求,爲請求的其餘部分連接到適當的服務器位置。如果連接字符串無效,ASP.NET 將引發一個異常,該異常與當配置的服務器連接字符串無效時引發的異常相同。該屬性用於在 SQL 或狀態服務器模式下在多個後端節點上劃分會話狀態數據。 此屬性是 .NET Framework 2.0 版中的新屬性。 默認值爲空字符串。 |
||||||||||||
regenerateExpiredSessionId |
可選的 Boolean 屬性。 指定當客戶端指定了過期的會話 ID 時是否重新發出會話 ID。默認情況下,當啓用了 regenerateExpiredSessionId 時,僅爲 cookieless 模式重新發出會話 ID。有關更多信息,請參見 IsCookieless。 此屬性是 .NET Framework 2.0 版中的新屬性。 默認值爲 true。 |
||||||||||||
sqlCommandTimeout |
可選的 TimeSpan 屬性。 指定使用 SQL Server 會話狀態模式的 SQL 命令的持續時間超時(秒)。持續時間超時是 SQL 命令可以處於空閒狀態的時間(秒),超過此時間之後,該命令將被取消。 此屬性是 .NET Framework 2.0 版中的新屬性。 默認值爲 0:00:30(30 秒)。 |
||||||||||||
sqlConnectionString |
可選的 String 屬性。 爲運行 SQL Server 的計算機指定連接字符串。該屬性在 mode 屬性設置爲 SQLServer 值時是必需的。有關更多信息,請參見會話狀態模式。
默認值爲 "data source=127.0.0.1;Integrated Security=SSPI"。 |
||||||||||||
stateConnectionString |
可選的 String 屬性。 指定遠程存儲會話狀態的服務器名稱或地址以及端口。端口值必須爲 42424。當 mode 爲 StateServer 值時,該屬性是必需的。確保運行 ASP.NET 狀態服務的服務器是存儲會話狀態信息的遠程服務器。該服務隨 ASP.NET 一起安裝,默認情況下爲 %SystemRoot%\Microsoft.NET\Framework\VersionNumber\aspnet_state.exe。有關更多信息,請參見會話狀態模式。
默認值爲 "tcpip=127.0.0.1:42424"。 |
||||||||||||
stateNetworkTimeout |
可選的 TimeSpan 屬性。 指定 Web 服務器與狀態服務器之間的 TCP/IP 網絡連接可以處於空閒狀態的時間(秒),超過此時間後,請求將被取消。該屬性在 mode 屬性設置爲 StateServer 值時使用。 默認值爲 10 秒。 |
||||||||||||
timeout |
可選的 TimeSpan 屬性。 指定在放棄一個會話前該會話可以處於空閒狀態的分鐘數。對於進程內和狀態服務器模式,timeout 屬性不能設置爲大於 525,601 分鐘(1 年)的值。 會話 timeout 配置設置僅適用於 ASP.NET 頁。更改會話 timeout 值不會影響 ASP 頁的會話超時時間。同樣,更改 ASP 頁的會話超時時間不會影響 ASP.NET 頁的會話超時時間。 默認值爲 20 分鐘。 |
||||||||||||
useHostingIdentity |
可選的 Boolean 屬性。 指定會話狀態將恢復爲宿主標識還是使用客戶端模擬。 如果爲 true,ASP.NET 將使用下列進程憑據之一來連接會話狀態存儲區: 宿主進程;對於 Microsoft Internet 信息服務 [IIS] 5 和 5.1 版爲 ASPNET,對於 Microsoft Windows Server 2003 則爲 NETWORK SERVICE。 應用程序模擬標識,當使用了以下配置時使用此憑據: <identity impersonate="true" userName="user" password="pwd" /> 如果爲 false,ASP.NET 將使用目前與當前請求的操作系統線程關聯的憑據來連接會話狀態存儲區。對於客戶端模擬,ASP.NET 將使用與瀏覽器協商的安全憑據來連接會話狀態存儲區。如果爲 false,ASP.NET 在連接會話狀態存儲區時不會恢復爲進程標識或應用程序模擬標識。有關更多信息,請參見 ASP.NET 模擬。 此屬性是 .NET Framework 2.0 版中的新屬性。 默認值爲 true。
|
||||||||||||
繼承的屬性 |
可選的屬性。 由所有節元素繼承的屬性。 |