ASP.NET Core2.2 和2.1 版本中对cookie的设置和存储

Posted han-guang-xue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.NET Core2.2 和2.1 版本中对cookie的设置和存储相关的知识,希望对你有一定的参考价值。

1.需要在startup.cs中添加cookie的服务

 services.Configure<CookiePolicyOptions>(option =>{
                option.CheckConsentNeeded=ContextBoundObject=>true;
                option.MinimumSameSitePolicy=SameSiteMode.None;
            }); //添加cookie的服务

图示:

技术图片

2.在startup.cs中启动服务

 app.UseCookiePolicy();      //启用cookie服务

图示:

技术图片

startup.cs中添加的引用:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;


//参数验证,路由的参数验证配置
using Microsoft.AspNetCore.Routing;
using Microsoft.AspNetCore.Routing.Constraints;
//mysql基础配置引用
using Online.Examination.Web.Repositories;
using Online.Examination.Web.Controllers;
using Online.Examination.Web.Repositories.DBBase;

图示:

技术图片

3.在控制层使用Append方法向客户端添加cookie 

//cookie的引用    需要引用这三个包

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.CookiePolicy;
using Microsoft.AspNetCore.Http.Features;

图示: 

技术图片技术图片

4.最后一步:很重要  如果服务器要想客户端存储cookie,客户端需要向服务器发送第一次请求,请求允许使用cookie

所以需要在控制层中写入方法,这个方法只需要请求一次,就可以向客户端存储cookie了

技术图片

5.js代码示例

 

$(function() {
    $.post("/login/OkCookie", function() {}) //如果使用cookie,客户端必须向服务端发送一次请求////
})

function login() {
    $(".error").text("");
    var uname = $("input[name=‘name‘]").val();
    var pwd = $("input[name=‘pwd‘]").val();
    var type = $("input[name=‘login_type‘]:checked").val();
    if (uname == "" || pwd == "") return false;
    $.post("/login/login", { "uname": uname, "pwd": pwd, "type": type }, function(msg) {
        if (msg.message == "success") {
            window.location.href = "index.html?id=" + msg.users.name;
        } else {
            $(".error").text("密码或账号错误");
        }
    })
}

 

图示:

技术图片

技术图片

 6.关于cookie其他的使用方法

代码:

 protected void DeleteCookies(string key)    //删除指定的cookie
        {
            HttpContext.Response.Cookies.Delete(key);
        }

        protected string GetCookies(string key)     //获取指定的cookie
        {
            HttpContext.Request.Cookies.TryGetValue(key, out string value);
            if (string.IsNullOrEmpty(value))
                value = string.Empty;
            return value;
        }

 

 

 

图示:

技术图片

 

以上是关于ASP.NET Core2.2 和2.1 版本中对cookie的设置和存储的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET CORE2.2在中间件内使用有作用域的服务

asp.net core webapi Post接收不到ajax请求数据

Linq 查询在 ASP.NET-Core 3.0 及更高版本中对数字等字符串进行排序

小5聊Asp.Net Core 2.1 主要依赖那些dll和版本

ReactJS/ASP.Net Core 2.1 版本 CORS 错误

如何在 ASP.NET Core 2.2 中实现标识