2
網站的詳細信息,它使用的單點登錄,單點登錄和註銷問題在ASP.NET
1. http:\\webgate.abcltd.com
2. http:\\sales.abcltd.com
3. http:\\emp.abcltd.com
webgate應用程序執行身份驗證和授權。其他人(sales,emp)使用webgate應用程序。當任何一個接入的銷售/ EMP網站網頁上,他們將被重定向到webgate的登錄頁面(這裏我用的形式認證。該配置下)
<authentication mode="Forms">
<forms loginUrl="Login.aspx"
protection="All"
name="WebGateSecurity"
path="/"
domain="abcltd.com"
defaultUrl="ApplicationList.aspx"
enableCrossAppRedirects="true"/>
</authentication>
<authorization>
<deny users="?" />
</authorization>
<machineKey validationKey="2C0904BC344116CC6FFD3DD7087C942878C41B7F861555651E69C7B72F9A7DF6BC3B63BFF0F1438DFB863EE3EAC62CBFFECA7482D3758888E7CDACDBBAE136D5" decryptionKey="A60EC9E480CB3BBC48D1D2B7FFF9E945FBA46196AD3029187022ADE8F7B99B25" validation="SHA1" decryption="AES" />
用戶憑據是針對數據存儲驗證和身份驗證票證/正在創建的Cookie如下
var authTicket=FormsAuthenticationTicket(1, username, DateTime.Now, DateTime.Now.AddMinutes(30), false, userActions, FormsAuthentication.FormsCookiePath);
string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
var authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
Response.Cookies.Add(authCookie);
如果給定的憑據是正確的,我特林重定向到請求的URL如下
if (Request.Params["ReturnURL"] == null || Request.Params["ReturnURL"].EndsWith("/Logout.aspx") || Request.Params["ReturnURL"].EndsWith("/Error.aspx"))
Response.Redirect(FormsAuthentication.DefaultUrl);
else
{
//Response.Redirect(FormsAuthentication.GetRedirectUrl(username, false));
FormsAuthentication.RedirectFromLoginPage(username, false);
}
我已經使用LoginStatus控件(放置在母版頁中)讓用戶從webgate應用程序執行登錄/註銷。當用戶註銷時,將執行以下代碼以刪除cookie。
protected void LoginStatus1_LoggingOut(object sender, LoginCancelEventArgs e)
{
FormsAuthentication.SignOut();
HttpCookie httpCookie = Request.Cookies[System.Web.Security.FormsAuthentication.FormsCookieName];
if (httpCookie != null)
{
httpCookie.Domain = "abcltd.com";
httpCookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(httpCookie);
}
}
配置在其他應用程序(銷售和EMP)是如下
<authentication mode="Forms">
<forms loginUrl="http://webgate.abcltd.com/Login.aspx" name="WebGateSecurity" protection="All" path="/" domain="abcltd.com" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<machineKey validationKey="2C0904BC344116CC6FFD3DD7087C942878C41B7F861555651E69C7B72F9A7DF6BC3B63BFF0F1438DFB863EE3EAC62CBFFECA7482D3758888E7CDACDBBAE136D5" decryptionKey="A60EC9E480CB3BBC48D1D2B7FFF9E945FBA46196AD3029187022ADE8F7B99B25" validation="SHA1" decryption="AES" />
我的問題是:註銷不工作。詳細地說,如果我說:退出後,我可以訪問webgate,sales和emp應用程序的任何頁面。
請幫幫我。
對不起,我在發佈到這個網站時犯了一個錯誤。它不是vrxstudios.com,它只是abcltd。我將編輯我的帖子。 – Partha 2010-07-01 06:32:40
嘗試只在'LoginStatus1_LoggingOut'中留下'FormsAuthentication.SignOut();'部分。使用FireBug檢查發生了什麼。查看cookie是否被刪除。 – 2010-07-01 06:53:46