程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET Forms驗證實現子域名(SubDomain)共享登陸下的缺陷

ASP.NET Forms驗證實現子域名(SubDomain)共享登陸下的缺陷

編輯:關於ASP.NET

一、什麼是單點登錄

單點登錄就是在多個web應用程序中,實現統一登錄方式,一但登錄了某web應 用程序,其它相關聯的web應用程序都無需再次登錄,一個地方退出,所有相關聯的 web應用程序都退出.

二、通過利用ASP.NET Forms驗證模式可以實現子域名(SubDomain)共享登陸下 的缺陷

要利用Asp.NET Form驗證模式實現同一主域下不同子域名共享登陸狀態需要進 行以下配置

配置Web.config

1.把Asp.net的認證模式改為Forms認證模式,domain 要等於你的應用程序對 應的域名,例如: .test.cn

<authentication mode="Forms">
       <forms name=".ASPNETFORM"  domain=".test.cn"  loginUrl="/login.aspx" defaultUrl="/default.aspx"
protection="All" timeout="30" path="/" requireSSL="false"  slidingExpiration="true"
enableCrossAppRedirects="false"  cookieless="UseDeviceProfile" />
     </authentication>

2.配置針對存儲在cookie中的票據信息進行加密解密的方式

<machineKey
validationKey="CF10047DB84FBA7F418BF30F9697B1D6EDDA3A90837F3C57B336B401 6E47986135B31B2432F7CB20A6858DFFB
E4E5ECD1451E17C91830993445D0EA5708BABBD"  decryptionKey="5D37DDB652B86956" validation="SHA1"/>

備注:生成machineKey網址

http://www.aspnetresources.com/tools/keycreator.aspx

登陸創建驗證票據

1.應用程序登陸頁面(Login.aspx)輸入用戶名、密碼並驗證通過後,創建一張 加密過的驗證票據,並存儲在cookie中

//創建驗證票
             FormsAuthenticationTicket ticket
                 = new FormsAuthenticationTicket(1,  name, DateTime.Now,
                     DateTime.Now.AddDays(1d),  false,
                     HttpContext.Current.Request.UserHostAddress
                     );
             string authTicket =  FormsAuthentication.Encrypt(ticket);
             HttpCookie cookie = new HttpCookie (FormsAuthentication.FormsCookieName, authTicket);
             cookie.Domain =  ConfigurationManager.AppSettings["SSODomain"];
             HttpContext.Current.Response.Cookies.Add (cookie);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved