我安装了清漆,一切正常。清漆 - 如何缓存登录用户
但是,我需要缓存登录用户。这是我在我的VCL中所拥有的:
backend default {
.host = "127.0.0.1";
.port = "8080";
}
sub vcl_recv {
unset req.http.Cookie;
if (req.http.Authorization || req.http.Cookie) {
return (lookup);
}
return (lookup);
}
sub vcl_fetch {
unset beresp.http.Set-Cookie;
set beresp.ttl = 24h;
return(deliver);
}
上述工作,但用户可以查看其他用户的数据,例如假设我以Sam的身份登录并访问了页面A.当另一个用户Angie登录并打开页面A时,她看到的内容与Sam相同。
有没有一种方法可以将页面限制为实际被授权查看该页面的登录用户?
我的请求头如下:
Request Headersview source
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Authorization Basic YWRtaW46YWRtaW4=
Connection keep-alive
Cookie tree-s="eJzTyCkw5NLIKTDiClZ3hANXW3WuAmOuRKCECUjWFEnWIyIdJGvGlQgEegAD3hAj"; __ac="0zVm7PLtpaeQUXtm9BeYrC5%2BzobmBLPQkjRtxjyRGHs1MGY1MTgzZGFkbWluIQ%3D%3D"; 'wc.cookiecredentials'="0241d135445f7ca0b1cb7aced45da4e750f5414dadmin!"
我可以使用Authorization
项的请求头实施这一限制?
这样做可以在网页本身没有任何修改,即esi标签,只是通过VCL做到这一点? – Frankline
对于ESI,您需要大幅改变页面。就cookie而言,如果您的网页只为已登录并在退出时(或会话过期)清除的用户设置了Cookie,则可以在我的答案中使用VCL(根据您的需要进行修改),以便删除多余的Cookie。 – Ketola