千家信息网

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

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要讲解了"ASP.NET Core在WebApi项目中怎么使用Cookie",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"ASP.NET Co
千家信息网最后更新 2025年02月01日ASP.NET Core在WebApi项目中怎么使用Cookie

这篇文章主要讲解了"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。

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

    在项目中添加一个控制器,用来测试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    {        ///         /// 设置Cookie        ///         [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信息:

    我们看到,这里只有一个Cookie信息,接下来方法SetCookie方法:

    我们看到,这里已经有我们刚才添加的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    {        ///         /// 设置Cookie        ///         [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);        }        ///         /// 根据key获取Cookie的Value值        ///         ///         [HttpGet]        [Route("GetCookie")]        public string GetCookid()        {                       return HttpContext.Request.Cookies["setCookie"];        }    }}

    运行程序,查看效果:

    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    {        ///         /// 设置Cookie        ///         [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);        }        ///         /// 根据key获取Cookie的Value值        ///         ///         [HttpGet]        [Route("GetCookie")]        public string GetCookid()        {                       return HttpContext.Request.Cookies["setCookie"];        }        ///         /// 根据key删除Cookie        ///         [HttpGet]        [Route("DeleteCookie")]        public void DeleteCookie()        {            HttpContext.Response.Cookies.Delete("setCookie");        }    }}

    运行程序,我们看查看获取Cookie的效果:

    接下来我们访问删除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();    services.AddControllers();}

    因为我们是在类库中使用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;        ///         /// 通过构造函数进行注入        ///         ///         public CookieHelper(IHttpContextAccessor httpContextAccessor)        {            _httpContextAccessor = httpContextAccessor;        }        ///         /// 根据key值删除对应的Cookie        ///         /// key值        public void DeleteCookie(string key)        {            _httpContextAccessor.HttpContext.Response.Cookies.Delete(key);        }        ///         /// 根据key值获取Cookie的value值        ///         /// key值        ///         public string GetCookie(string key)        {           return _httpContextAccessor.HttpContext.Request.Cookies[key];        }        ///         /// 设置Cookie值        ///         /// key值        /// value值        public void SetCookie(string key, string value)        {            _httpContextAccessor.HttpContext.Response.Cookies.Append(key, value);        }        ///         /// 设置Cookie及过期时间        ///         /// key值        /// value值        /// 过期时间,以分钟为单位        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();    // 注册Cookie操作接口    services.AddSingleton();    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;        }        ///         /// 设置Cookie        ///         [HttpGet]        [Route("SetCookie")]        public void Get()        {            _helper.SetCookie("cookieHelperKey", "cookieHelperValue");            // 设置过期时间            _helper.SetCookie("cookieHelperExpiresKey", "cookieHelperExpitesValue",10);        }        ///         /// 根据key获取Cookie的Value值        ///         ///         [HttpGet]        [Route("GetCookie")]        public string GetCookid()        {            return _helper.GetCookie("cookieHelperKey");        }        ///         /// 根据key删除Cookie        ///         [HttpGet]        [Route("DeleteCookie")]        public void DeleteCookie()        {            _helper.DeleteCookie("cookieHelperKey");        }    }}

    运行程序,首先访问设置Cookie的方法:

    可以看到,已经我们设置的Cookie信息了。

    接下来访问获取Cookie:

    可以根据key获取到对应的value值。

    最后访问删除Cookie:

    可以看到,key对应的cookie已经被删除了。

    感谢各位的阅读,以上就是"ASP.NET Core在WebApi项目中怎么使用Cookie"的内容了,经过本文的学习后,相信大家对ASP.NET Core在WebApi项目中怎么使用Cookie这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

    信息 时间 方法 项目 控制器 控制 代码 接口 程序 接下来 运行 存储 学习 封装 内容 客户 效果 浏览器 用户 路径 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 游戏主机用什么服务器 火山软件开发培训 软件开发行业环境分析报告 android软件开发方案价钱 net core数据库操作 天龙八部冰雪服务器是否重新洗牌 省市区数据库excel 国家网络安全宣传主题是什么 网络安全与法制主题观后感 曙光网络安全生产中心基建项目 网络文明及网络安全专题班会 h3c 防火墙服务器发布 ftp是什么服务器 软件开发日式需求式样书 java程序软件开发实例 机器人与嵌入式软件开发报告 网络安全个人计划 武装突袭3如何免费开服务器 e570 软件开发 2017最新网络安全 桑裕网络技术有限公司 为什么门禁系统连接不上数据库 黑月为什么服务器都满了 新华三杯网络安全参赛人数 部队网络安全个人对照检查 闵行区信息化软件开发批发价格 高一必修一信息技术数据库 本地服务器数据库打不开怎么办 网络安全法律法规培训目的 去泰国做软件开发危险么
    0