NodeJS:如何在用户身份验证后重置公用文件夹的缓存控制

时间:2020-05-04 11:05:35

标签: node.js cache-control

实际上,“ public”文件夹的缓存控件是由固定的:

    ->add('file', FileType::class, [
      'label' => 'Choisir un fichier',
      'mapped' => false,
      'multiple' => true,
      'constraints' => [
        new All([
          'constraints' => [
            new File([
              'maxSize' => '1024k',
              'mimeTypesMessage' => 'Please upload a valid PDF document',
              'mimeTypes' => [
                'application/pdf',
                'application/x-pdf'
              ]
            ]),
          ],
        ]),
      ]
    ])

当用户未通过身份验证或会话未到期时,我想将maxAge重置为0。

有办法吗? 预先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我认为您可以这样做,希望这可能对您有用

 if(user === authenticated){
    app.use('/public/images/icons', static('public/images/icons', 12345));
    app.use('/public/images/', static('public/images', 1234567);
    etc.  
    }
//function declaration 
 function static(dirname, age) {
            return express.static(path.join(__dirname, dirname), { maxAge: age });
        }

答案 1 :(得分:0)

已解决。

关于我的原始请求:

function userConnect(req, res){ 
...
res.setHeader('Clear-Site-Data', '"cache", "storage"');
....

但是现在,我正在使用:

const serverStarted = moment().unix();
....
app.get("*",function(req, res, next){
  if (req.session&&req.session.serverStarted!=serverStarted) {
    res.setHeader('Clear-Site-Data', '"cache", "storage"');
    req.session.serverStarted = serverStarted;
  }
  next();
})