1、后端

1.1 设置

Startup.cs (Sesion设置和跨域设置)

 public void ConfigureServices(IServiceCollection services)
 {
     // Session
     services.AddDistributedMemoryCache();
     services.AddSession(opt =>
                         {
                             opt.Cookie.Name = "lesson09Demo"; // 本地Cookie名称
                             opt.Cookie.HttpOnly = true; // 禁止页面脚本读取Cookie
                             opt.IdleTimeout = TimeSpan.FromMinutes(2); // 过期时间2分钟
                         });
     // 跨域要添加 来源域名WithOrigins()和方法AllowCredentials()
     services.AddCors(opt => opt.AddDefaultPolicy(o => o.WithOrigins(new string[] {"http://192.168.1.4:8080" }).AllowAnyHeader().AllowAnyMethod().AllowCredentials()));
 }
 public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
 {
      app.UseSession();
 }

1.2 使用

在控制器中

// 读取 
string loginN = HttpContext.Session.GetString("loginName");

// 赋值(写入)
HttpContext.Session.SetString("loginName", sysUser.LoginName);

2、前端

调用时:

1、前端的地址和调用的后端地址要一致,如都是IP或都是localhost,否则它不能正常传递cookie,造成后端读session为null

2、axios的参数要加 {withCredentials: true},表示前端请求后端时 携带cookie,这样后端能读取到session

this.axios
    .get(
    "http://192.168.1.4:22477/api/User/Login?loginName=" +
    this.form.loginName +
    "&password=" +
    this.form.password,
    {
        withCredentials: true,
    }
)
posted on 2022-10-11 11:25  随缘而处  阅读(556)  评论(0编辑  收藏  举报