zxCoder
V2EX  ›  问与答

.net core web api service.AddSession 自动添加的那个 cookie 是啥

  •  
  •   zxCoder · May 2, 2021 · 895 views
    This topic created in 1930 days ago, the information mentioned may be changed or developed.
    services.AddSession(s => {
                    s.Cookie.Name = ".Web.Session";
                    s.Cookie.HttpOnly = true;
                    s.IdleTimeout = TimeSpan.FromSeconds(10);
                });
    

    然后在 Controller 里

    HttpContext.Session.Set("User_Role", ur);
    

    有两个问题不懂

    1. 设置这个 Session 的时候会自动设置客户端的 cookie,但是当客户端已经有了 cookie,后面无论再怎么请求这个接口,都不会重新设置覆盖这个 cookie,必须手动把 cookie 删除才行,这是为何?
    2. 自动设置的 Cookie 和后台 HttpContext.Session.Id 看到的不太意义,哪个才是 session-id 呢?

    第二个问题解决了,源码上说的是 This is not the same as the session cookie

    Supplement 1  ·  May 2, 2021

    解决了 cookie要设置max-age

    chinvo
        1
    chinvo  
       May 2, 2021 via iPhone
    session id 加密保存到 cookie

    asp.net core 的所有 cookie, 除了那个前端设置的 GDPR cookie, 都是用 data protection 加密的

    要清除 session, 用 HttpContext.Session.Clear();

    但是没有 session.destroy
    zxCoder
        2
    zxCoder  
    OP
       May 2, 2021
    @chinvo 我现在设置了 session 很短的存活时间进行测试,session 是正常的,比如 10 秒后再请求就会生成一个新的 session 覆盖,但是 cookie 不会,一直是一开始那一个
    chinvo
        3
    chinvo  
       May 2, 2021 via iPhone
    session 的 ttl 是在 session store 里面实现的, 和 session id 没有直接关系
    zxCoder
        4
    zxCoder  
    OP
       May 2, 2021
    @chinvo session 覆盖了,cookie 不会自动覆盖吗
    chinvo
        5
    chinvo  
       May 2, 2021 via iPhone
    @zxCoder #4 session 和这个 cookie 没有直接关系

    session 里的数据都在服务器上
    zxCoder
        6
    zxCoder  
    OP
       May 2, 2021
    @chinvo 有关系的,session-id 就是通过 response 的 headers 的 set-cookie 设置的
    chinvo
        7
    chinvo  
       May 2, 2021 via iPhone
    @zxCoder #6 是, session id 是服务器确定去查哪个 session container 的依据

    但是操作 session 和这个 cookie 没有直接关系

    你就是往 session 里放 500T 的数据再删干净, 再放再删, 循环 500 次, session id 还是那个 session id
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1150 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 18:08 · PVG 02:08 · LAX 11:08 · JFK 14:08
    ♥ Do have faith in what you're doing.