チェンジセット 1599 (default)


以下の違いを無視:
日時:
2023/08/21 19:11:23 (14ヵ月前)
更新者:
hizuya@…
ログメッセージ:
  • [1598] でリクエストとレスポンスのクッキーコレクションの取り扱いを間違っていたのを修正。
ファイル:
1個の更新

凡例:

未変更
追加
削除
  • framework/trunk/WebLibrary/Sources/Security/WebSecurityUtility.cs

    r1597 r1599  
    205205 
    206206            RewriteFormsAuthenticationCookie( 
    207                 context.Request.Cookies, 
     207                context.Response.Cookies, 
    208208                userName, 
    209209                issueDate, 
     
    217217        /// 指定されたクッキーコレクションに対して、フォーム認証チケットを含むクッキーを作成して置き換えます。 
    218218        /// </summary> 
    219         /// <param name="cookies"> 
    220         /// クッキーコレクション。 
     219        /// <param name="responseCookies"> 
     220        /// レスポンスに使用するクッキーコレクション。 
    221221        /// </param> 
    222222        /// <param name="userName"> 
     
    249249        /// </exception> 
    250250        public static void RewriteFormsAuthenticationCookie( 
    251             HttpCookieCollection cookies, 
     251            HttpCookieCollection responseCookies, 
    252252            string userName, 
    253253            DateTime? issueDate, 
     
    258258        { 
    259259            SetFormsAuthenticationCookie( 
    260                 cookies, 
     260                responseCookies, 
    261261                CreateFormsAuthenticationTicket( 
    262262                    userName, 
     
    291291            } 
    292292 
    293             RenewFormsAuthenticationCookieIfOld(context.Request.Cookies); 
     293            RenewFormsAuthenticationCookieIfOld( 
     294                context.Request.Cookies, 
     295                context.Response.Cookies); 
    294296        } 
    295297 
     
    298300        /// 指定されたクッキーコレクションに設定されているフォーム認証チケットとクッキーの期限を、現在の日時を元に延長します。 
    299301        /// </summary> 
    300         /// <param name="cookies"> 
    301         /// クッキーコレクション。 
     302        /// <param name="requestCookies"> 
     303        /// リクエストを元にしたクッキーコレクション。 
     304        /// </param> 
     305        /// <param name="responseCookies"> 
     306        /// レスポンスに使用するクッキーコレクション。 
    302307        /// </param> 
    303308        /// <exception cref="HttpException"> 
     
    305310        /// 暗号化認証チケットを HTTP Cookie で使用するのに適した形に変換できませんでした。 
    306311        /// </exception> 
    307         public static void RenewFormsAuthenticationCookieIfOld(HttpCookieCollection cookies) 
    308         { 
    309             HttpCookie cookie = cookies[FormsAuthentication.FormsCookieName]; 
     312        public static void RenewFormsAuthenticationCookieIfOld( 
     313            HttpCookieCollection requestCookies, 
     314            HttpCookieCollection responseCookies) 
     315        { 
     316            HttpCookie cookie = requestCookies[FormsAuthentication.FormsCookieName]; 
    310317            if (cookie == null) 
    311318            { 
     
    331338            } 
    332339 
    333             SetFormsAuthenticationCookie(cookies, newTicket); 
     340            SetFormsAuthenticationCookie(responseCookies, newTicket); 
    334341        } 
    335342 
     
    360367            } 
    361368 
    362             RemoveFormsAuthenticationCookie(context.Request.Cookies, context.Request.Browser.SupportsEmptyStringInCookieValue); 
     369            RemoveFormsAuthenticationCookie( 
     370                context.Request.Cookies, 
     371                context.Response.Cookies, 
     372                context.Request.Browser.SupportsEmptyStringInCookieValue); 
    363373        } 
    364374 
     
    366376        /// 指定されたクッキーコレクションから、フォーム認証のクッキーを削除します。 
    367377        /// </summary> 
    368         /// <param name="cookies"> 
    369         /// クッキーコレクション。 
     378        /// <param name="requestCookies"> 
     379        /// リクエストを元にしたクッキーコレクション。 
     380        /// </param> 
     381        /// <param name="responseCookies"> 
     382        /// レスポンスに使用するクッキーコレクション。 
    370383        /// </param> 
    371384        /// <param name="supportsEmptyStringInCookieValue"> 
     
    381394        /// メソッドと同じ動きですが、呼び出した後ログインページへのリダイレクトは行われません。 
    382395        /// </remarks> 
    383         public static void RemoveFormsAuthenticationCookie(HttpCookieCollection cookies, bool supportsEmptyStringInCookieValue) 
     396        public static void RemoveFormsAuthenticationCookie( 
     397            HttpCookieCollection requestCookies, 
     398            HttpCookieCollection responseCookies, 
     399            bool supportsEmptyStringInCookieValue) 
    384400        { 
    385401            string cookieName = FormsAuthentication.FormsCookieName; 
    386             HttpCookie oldCookie = cookies[cookieName]; 
     402            HttpCookie oldCookie = requestCookies[cookieName]; 
    387403            if (oldCookie == null) 
    388404            { 
     
    415431 
    416432            Debug.Assert(cookieName == newCookie.Name, "Invalid cookie name"); 
    417             SaveCookie(cookies, newCookie); 
     433            SaveCookie(responseCookies, newCookie); 
    418434        } 
    419435 
     
    444460        /// 指定したチケットをクッキーコレクションに設定します。 
    445461        /// </summary> 
    446         /// <param name="cookies"> 
    447         /// クッキーコレクション。 
     462        /// <param name="responseCookies"> 
     463        /// レスポンスに使用するクッキーコレクション。 
    448464        /// </param> 
    449465        /// <param name="ticket"> 
     
    453469        /// 暗号化認証チケットを HTTP Cookie で使用するのに適した形に変換できませんでした。 
    454470        /// </exception> 
    455         private static void SetFormsAuthenticationCookie(HttpCookieCollection cookies, FormsAuthenticationTicket ticket) 
    456         { 
    457             SaveCookie(cookies, CreateFormsAuthenticationCookie(ticket)); 
     471        private static void SetFormsAuthenticationCookie(HttpCookieCollection responseCookies, FormsAuthenticationTicket ticket) 
     472        { 
     473            SaveCookie(responseCookies, CreateFormsAuthenticationCookie(ticket)); 
    458474        } 
    459475 
     
    461477        /// 指定したクッキーをクッキーコレクションに設定します。 
    462478        /// </summary> 
    463         /// <param name="cookies"> 
    464         /// クッキーコレクション。 
     479        /// <param name="responseCookies"> 
     480        /// レスポンスに使用するクッキーコレクション。 
    465481        /// </param> 
    466482        /// <param name="cookie"> 
    467483        /// 設定するチケット。 
    468484        /// </param> 
    469         private static void SaveCookie(HttpCookieCollection cookies, HttpCookie cookie) 
    470         { 
    471             cookies.Remove(cookie.Name); 
    472             cookies.Add(cookie); 
     485        private static void SaveCookie(HttpCookieCollection responseCookies, HttpCookie cookie) 
     486        { 
     487            responseCookies.Remove(cookie.Name); 
     488            responseCookies.Add(cookie); 
    473489        } 
    474490    } 
詳しい使い方は TracChangeset を参照してください。