中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET?Core在WebApi項目中怎么使用Cookie

發布時間:2022-03-28 09:16:12 來源:億速云 閱讀:368 作者:iii 欄目:開發技術

這篇文章主要講解了“ASP.NET Core在WebApi項目中怎么使用Cookie”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“ASP.NET Core在WebApi項目中怎么使用Cookie”吧!

    一、Cookie的作用

    Cookie通常用來存儲有關用戶信息的一條數據,可以用來標識登錄用戶,Cookie存儲在客戶端的瀏覽器上。在大多數瀏覽器中,每個Cookie都存儲為一個小文件。Cookie表示為鍵/值對的形式,可以利用鍵來讀取、寫入或刪除Cookie。

    在ASP.NET Core中也可以使用Cookie來維護回話狀態,包含回話ID的Cookie會隨著每個請求一起發送到客戶端。

    二、在ASP.NET Core中使用Cookie

    我們創建一個ASP.NET Core WebApi的項目,然后在WebApi中測試使用Cookie。

    ASP.NET?Core在WebApi項目中怎么使用Cookie

    1、在控制器中直接使用Cookie

    在項目中添加一個控制器,用來測試Cookie:

    ASP.NET?Core在WebApi項目中怎么使用Cookie

    1.1、設置Cookie

    我們在控制器里面可以使用下面的代碼設置Cookie:

    HttpContext.Response.Cookies.Append("setCookie", "CookieValue");

    如果想設置Cookie的過期時間,我們可以使用Append的重載方法:

    CookieOptions options = new CookieOptions();
    // 設置過期時間
    options.Expires = DateTime.Now.AddDays(1);
    HttpContext.Response.Cookies.Append("setCookieExpires", "CookieValueExpires", options);

    控制器里面的方法代碼如下:

    using System;
    using Microsoft.AspNetCore.Http;
    using Microsoft.AspNetCore.Mvc;
    
    namespace CookieDemo.Controllers
    {
        [Route("api/")]
        [ApiController]
        public class CookieTestController : ControllerBase
        {
            /// <summary>
            /// 設置Cookie
            /// </summary>
            [HttpGet]
            [Route("SetCookie")]
            public void Get()
            {
                HttpContext.Response.Cookies.Append("setCookie", "CookieValue");
             
                CookieOptions options = new CookieOptions();
                // 設置過期時間
                options.Expires = DateTime.Now.AddDays(1);
                HttpContext.Response.Cookies.Append("setCookieExpires", "CookieValueExpires", options);
            }
        }
    }

    CookieOptions類可以在創建Cookie時指定如下的附加屬性:

    • 域:用于指定與Cookie關聯的域。

    • 過期時間:用于指定Cookie的過期時間。

    • 路徑:用于指定Cookie路徑。

    • 安全策略:用于指定Cookie是否可以通過HTTPS訪問。

    • HttpOnly:用于指定Cookie是否僅對服務器可用。

    運行程序,我們首先訪問WeatherForecast控制器,并且查看Cookie信息:

    ASP.NET?Core在WebApi項目中怎么使用Cookie

    我們看到,這里只有一個Cookie信息,接下來方法SetCookie方法:

    ASP.NET?Core在WebApi項目中怎么使用Cookie

    我們看到,這里已經有我們剛才添加的Cookie信息了。

    1.2、獲取Cookie

    我們可以根據key來獲取Cookie信息:

    HttpContext.Request.Cookies["key"];

    我們來看具體代碼:

    using System;
    using Microsoft.AspNetCore.Http;
    using Microsoft.AspNetCore.Mvc;
    
    namespace CookieDemo.Controllers
    {
        [Route("api/")]
        [ApiController]
        public class CookieTestController : ControllerBase
        {
            /// <summary>
            /// 設置Cookie
            /// </summary>
            [HttpGet]
            [Route("SetCookie")]
            public void Get()
            {
                HttpContext.Response.Cookies.Append("setCookie", "CookieValue");
             
                CookieOptions options = new CookieOptions();
                // 設置過期時間
                options.Expires = DateTime.Now.AddDays(1);
                HttpContext.Response.Cookies.Append("setCookieExpires", "CookieValueExpires", options);
            }
    
            /// <summary>
            /// 根據key獲取Cookie的Value值
            /// </summary>
            /// <returns></returns>
            [HttpGet]
            [Route("GetCookie")]
            public string GetCookid()
            {           
                return HttpContext.Request.Cookies["setCookie"];
            }
        }
    }

    運行程序,查看效果:

    ASP.NET?Core在WebApi項目中怎么使用Cookie

    1.3、刪除Cookie信息

    我們可以根據key刪除Cookie信息,如下代碼:

    HttpContext.Response.Cookies.Delete("key");

    接下來看具體代碼:

    using System;
    using Microsoft.AspNetCore.Http;
    using Microsoft.AspNetCore.Mvc;
    
    namespace CookieDemo.Controllers
    {
        [Route("api/")]
        [ApiController]
        public class CookieTestController : ControllerBase
        {
            /// <summary>
            /// 設置Cookie
            /// </summary>
            [HttpGet]
            [Route("SetCookie")]
            public void Get()
            {
                HttpContext.Response.Cookies.Append("setCookie", "CookieValue");
             
                CookieOptions options = new CookieOptions();
                // 設置過期時間
                options.Expires = DateTime.Now.AddDays(1);
                HttpContext.Response.Cookies.Append("setCookieExpires", "CookieValueExpires", options);
            }
    
            /// <summary>
            /// 根據key獲取Cookie的Value值
            /// </summary>
            /// <returns></returns>
            [HttpGet]
            [Route("GetCookie")]
            public string GetCookid()
            {           
                return HttpContext.Request.Cookies["setCookie"];
            }
    
            /// <summary>
            /// 根據key刪除Cookie
            /// </summary>
            [HttpGet]
            [Route("DeleteCookie")]
            public void DeleteCookie()
            {
                HttpContext.Response.Cookies.Delete("setCookie");
            }
        }
    }

    運行程序,我們看查看獲取Cookie的效果:

    ASP.NET?Core在WebApi項目中怎么使用Cookie

    接下來我們訪問刪除Cookie的方法:

    ASP.NET?Core在WebApi項目中怎么使用Cookie可以看到,剛才的Cookie信息已經刪除掉了。

    2、封裝Cookie

    在上面的例子中,我們是訪問的HttpContext對象的Response和Request,然后才能設置、獲取或刪除Cookie信息。在具體的程序中,我們一般是把Cookie的操作進行封裝,我們可以使用IHttpContextAccessor接口訪問ASP.NET Core中的HttpContext.HttpContextAccessor類實現此接口。下面我們看一下如何在類庫中操作Cookie。

    首先,我們需要注冊IHttpContextAccessor以進行依賴項注入,在Startup類的ConfigureServices方法中添加類型為HttpContextAccessor的單例服務:

    public void ConfigureServices(IServiceCollection services)
    {
        // 注冊為單例
        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
        services.AddControllers();
    }

    因為我們是在類庫中使用Cookie,所以需要創建一個單獨的類庫:

    ASP.NET?Core在WebApi項目中怎么使用Cookie

    接下來創建一個接口,里面封裝Cookie的一些操作:

    namespace CookieDemo.Framework
    {
        public interface ICookieHelper
        {
            void SetCookie(string key, string value);
    
            void SetCookie(string key, string value, int expiresTime);
    
            string GetCookie(string key);
    
            void DeleteCookie(string key);
        }
    }

    然后定義一個具體的實現類實現ICookieHelper接口:

    using Microsoft.AspNetCore.Http;
    using System;
    
    namespace CookieDemo.Framework
    {
        public class CookieHelper : ICookieHelper
        {
            private readonly IHttpContextAccessor _httpContextAccessor;
    
            /// <summary>
            /// 通過構造函數進行注入
            /// </summary>
            /// <param name="httpContextAccessor"></param>
            public CookieHelper(IHttpContextAccessor httpContextAccessor)
            {
                _httpContextAccessor = httpContextAccessor;
            }
    
            /// <summary>
            /// 根據key值刪除對應的Cookie
            /// </summary>
            /// <param name="key">key值</param>
            public void DeleteCookie(string key)
            {
                _httpContextAccessor.HttpContext.Response.Cookies.Delete(key);
            }
    
            /// <summary>
            /// 根據key值獲取Cookie的value值
            /// </summary>
            /// <param name="key">key值</param>
            /// <returns></returns>
            public string GetCookie(string key)
            {
               return _httpContextAccessor.HttpContext.Request.Cookies[key];
            }
    
            /// <summary>
            /// 設置Cookie值
            /// </summary>
            /// <param name="key">key值</param>
            /// <param name="value">value值</param>
            public void SetCookie(string key, string value)
            {
                _httpContextAccessor.HttpContext.Response.Cookies.Append(key, value);
            }
    
            /// <summary>
            /// 設置Cookie及過期時間
            /// </summary>
            /// <param name="key">key值</param>
            /// <param name="value">value值</param>
            /// <param name="expiresTime">過期時間,以分鐘為單位</param>
            public void SetCookie(string key, string value, int expiresTime)
            {
                CookieOptions options = new CookieOptions()
                {
                    Expires = DateTime.Now.AddMinutes(expiresTime)
                };
                _httpContextAccessor.HttpContext.Response.Cookies.Append(key, value,options);
            }
        }
    }

    最后我們還需要在Startup的ConfigureServices方法里面注入:

    public void ConfigureServices(IServiceCollection services)
    {
        // 注冊為單例
        services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
        // 注冊Cookie操作接口
        services.AddSingleton<ICookieHelper, CookieHelper>();
        services.AddControllers();
    }

    在添加一個控制器訪問Cookie:

    using CookieDemo.Framework;
    using Microsoft.AspNetCore.Mvc;
    
    namespace CookieDemo.Controllers
    {
        [Route("api/CookieHelperTest")]
        [ApiController]
        public class CookieHelperTestController : ControllerBase
        {
    
            private readonly ICookieHelper _helper;
    
            public CookieHelperTestController(ICookieHelper helper)
            {
                _helper = helper;
            }
    
    
            /// <summary>
            /// 設置Cookie
            /// </summary>
            [HttpGet]
            [Route("SetCookie")]
            public void Get()
            {
                _helper.SetCookie("cookieHelperKey", "cookieHelperValue");
                // 設置過期時間
                _helper.SetCookie("cookieHelperExpiresKey", "cookieHelperExpitesValue",10);
            }
    
            /// <summary>
            /// 根據key獲取Cookie的Value值
            /// </summary>
            /// <returns></returns>
            [HttpGet]
            [Route("GetCookie")]
            public string GetCookid()
            {
                return _helper.GetCookie("cookieHelperKey");
            }
    
            /// <summary>
            /// 根據key刪除Cookie
            /// </summary>
            [HttpGet]
            [Route("DeleteCookie")]
            public void DeleteCookie()
            {
                _helper.DeleteCookie("cookieHelperKey");
            }
        }
    }

    運行程序,首先訪問設置Cookie的方法:

    ASP.NET?Core在WebApi項目中怎么使用Cookie

    可以看到,已經我們設置的Cookie信息了。

    接下來訪問獲取Cookie:

    ASP.NET?Core在WebApi項目中怎么使用Cookie

    可以根據key獲取到對應的value值。

    最后訪問刪除Cookie:

    ASP.NET?Core在WebApi項目中怎么使用Cookie

    可以看到,key對應的cookie已經被刪除了。

    感謝各位的閱讀,以上就是“ASP.NET Core在WebApi項目中怎么使用Cookie”的內容了,經過本文的學習后,相信大家對ASP.NET Core在WebApi項目中怎么使用Cookie這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    宁海县| 新田县| 永和县| 高邑县| 虎林市| 吴旗县| 井研县| 赣州市| 武清区| 报价| 海口市| 柘荣县| 越西县| 安阳市| 邢台市| 安顺市| 大港区| 任丘市| 宁夏| 石景山区| 屯昌县| 大厂| 富川| 澳门| 陇南市| 河东区| 峨山| 城步| 蓬溪县| 桓台县| 湟中县| 泰安市| 屏山县| 永胜县| 乐安县| 石嘴山市| 临桂县| 即墨市| 崇信县| 宝清县| 茌平县|