[英]c# how do I turn this data into a cookie?
我正在為一個論壇API做一個包裝器,一個函數返回這個,這意味着為你提供足夠的信息來設置一個cookie來記錄用戶:
<?xml version="1.0" encoding="utf-8" ?>
<ApiResponse>
<ErrorCode>0</ErrorCode>
<ErrorDescription/>
<ResultData recordcount="1">
<Record>
<Username>Gullanian</Username>
<UserID>4</UserID>
<CookieName>WWF9sLID</CookieName>
<CookieKey>UID</CookieKey>
<CookieData>Gullanian-CD45-ZCB-D72Z-AAC6</CookieData>
<CookiePath>/scirranew/forum/</CookiePath>
<ForumPath>http://127.0.0.1/scirranew/Forum/</ForumPath>
</Record>
</ResultData>
</ApiResponse>
我已經達到了這個目的:
public class WebWizCookie
{
public string Username { get; set; }
public int UserID { get; set; }
public string CookieName { get; set; }
public string CookieKey { get; set; }
public string CookieData { get; set; }
public string CookiePath { get; set; }
public string ForumPath { get; set; }
/// <summary>
/// Loads this cookie so user is logged in with this cookie data.
/// </summary>
public void LoadCookie(double MinutesExpiry)
{
HttpCookie Cookie = new HttpCookie(this.CookieName);
Cookie[this.CookieKey] = this.CookieData;
Cookie.Domain = this.CookiePath;
Cookie.Expires = DateTime.Now.AddMinutes(MinutesExpiry);
HttpContext.Current.Response.Cookies.Add(Cookie);
}
它正在返回所有值,但是當我調用此函數時,我沒有登錄到站點。 有誰知道我在這里做錯了什么? 忘記設置某些內容,或者設置錯誤?
設置cookie后,如果我打印出值:
HttpContext.Current.Response.Write("Cookie[" + this.CookieKey + "] = " + this.CookieData + "<br />");
HttpContext.Current.Response.Write("Cookie.Domain = " + ConfigurationSettings.AppSettings["MasterDomainRoot"] + "<br />");
我明白了:
Cookie[UID] = Gullanian2-4B9B-9D5-27E2-A413
Cookie.Domain = http://localhost/ScirraNew
UID
在谷歌瀏覽器中,開發人員工具說有一個cookie:
第一步是確定cookie是否正確創建。 你檢查過嗎? (您可以使用Firefox的Web開發人員工具欄執行此操作)。
你的Cookie.Domain
是錯誤的。 請參閱MSDN上的HttpCookie.Domain
- 它應該只包含域(例如“localhost”)而不是完整路徑(“http:// localhost / ScirraNew”)。 如果您想將cookie限制為僅限於網站的某些部分,則會有一個Path
屬性,但這是一個很少使用的功能(我從來沒有遇到過這樣做的理由)。
順便說一句,您不需要設置Domain
屬性 - 默認情況下,Cookie由同一域中的所有頁面共享。 如果你必須在不同的子域之間共享cookie,你真的只需要設置它(例如www.mysite.com和secure.mysite.com,你需要將Domain
設置為“mysite.com”)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.