web-dev-qa-db-ja.com

asp.net WebサイトでCookie値を取得する方法

ログインに成功した後、クッキーを作成し、ユーザー名の値を保存しています。 Webサイトが開かれたときにCookieにアクセスするにはどうすればよいですか。 Cookieが存在する場合、Cookieの値からユーザー名のテキストボックスに値を入力します。そして、値を解読してユーザー名を取得する方法。データベースからユーザーの詳細を取得することにより、サーバー側の検証を行っています。私は2010年とC#を使用しています

FormsAuthenticationTicket tkt;
string cookiestr;
HttpCookie ck;
tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now,
    DateTime.Now.AddYears(1), chk_Rememberme.Checked, "User Email");
cookiestr = FormsAuthentication.Encrypt(tkt);
ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);

if (chk_Rememberme.Checked)
{
    ck.Expires = tkt.Expiration;
    ck.Path = FormsAuthentication.FormsCookiePath;
    Response.Cookies.Add(ck);
}

cookieは.YAFNET_Authenticationという名前で作成され、コンテンツは暗号化されます

Webconfig:

  <forms name=".YAFNET_Authentication" loginUrl="Home.aspx"
  protection="All" timeout="15000" cookieless="UseCookies"/>
36
Mark

Request.Cookies collectionを使用してCookieを読み取ることができます。

if(Request.Cookies["key"]!=null)
{
   var value=Request.Cookies["key"].Value;
}
81
adatapost

FormsAuthentication.Decryptは、名前ではなく、Cookieの実際の値を取得します。次のようなCookie値を取得できます

HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName].Value;

そしてそれを解読します。

19
kvc

この関数をglobal.asaxに追加します

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
{
    string cookieName = FormsAuthentication.FormsCookieName;
    HttpCookie authCookie = Context.Request.Cookies[cookieName];

    if (authCookie == null)
    {
        return;
    }
    FormsAuthenticationTicket authTicket = null;
    try
    {
        authTicket = FormsAuthentication.Decrypt(authCookie.Value);
    }
    catch
    {
        return;
    }
    if (authTicket == null)
    {
        return;
    }
    string[] roles = authTicket.UserData.Split(new char[] { '|' });
    FormsIdentity id = new FormsIdentity(authTicket);
    GenericPrincipal principal = new GenericPrincipal(id, roles);

    Context.User = principal;
}

httpContext.Current.User.Identity.Nameを使用してユーザー名を取得できます。それが役に立てば幸い

8
genesistr
HttpCookie cook = new HttpCookie("testcook");
cook = Request.Cookies["CookName"];
if (cook != null)
{
    lbl_cookie_value.Text = cook.Value;
}
else
{
    lbl_cookie_value.Text = "Empty value";
}

参照 ここをクリック