0

ASP.NET で Web サイトを開発しました。これで認証を行います。

認可は別の Web サービスによって行われます。Web サービスからの回答が成功の場合、チケットを作成します。

var ticket = new FormsAuthenticationTicket(1, param.Login, DateTime.Now, DateTime.Now.AddDays(1), false, string.Empty, FormsAuthentication.FormsCookiePath);
            var encTicket = FormsAuthentication.Encrypt(ticket);

            var AuthCookie = new HttpCookie(FormsAuthentication.FormsCookieName)
            {
                Value = encTicket,
                Expires = DateTime.Now.AddDays(1)
            };

            Response.Cookies.Set(AuthCookie);

このコードは認証 Cookie を追加しました。しかし、前のコードの後に​​次の文字列を追加すると:

                Response.Redirect("<redirect address>");

リダイレクト後に Cookie が消えます。

なぜそれが起こったのですか?

認証の web.config 部分は次のとおりです。

<authentication mode="Forms">
  <forms name=".ASPXFORMSAUTH" loginUrl="~/login.ashx" />
</authentication>
4

1 に答える 1

0

Cookie に関連付けられている Cookie データが、暗号化された形式で許可されている最大サイズを超えている可能性があります。暗号化されていないため、データが大きくなりすぎません。

Cookie のサイズが大きいと、応答ヘッダーから Cookie が削除される場合があります。以下の修正は試してみる価値があります。

  • Cookie に設定するデータ量を減らす
  • 暗号化されていない形式で cookie を 1 回だけ試します。このようにして、実際に問題を引き起こしているのは Cookie のサイズであることが確認されます。

このPOSTは、Cookie のサイズに関する適切な情報を提供します。

于 2013-07-24T14:58:29.603 に答える