我想为我们的 asp.net mvc 站点的登录页面使用页面缓存。此页面仅供匿名用户访问。但是,如果用户已登录,我希望此页面重定向到经过身份验证的用户主页。
问题是,如果我缓存登录页面,登录用户仍然可以访问此页面,因为它已缓存在他们的浏览器上。
显然,如果用户经过身份验证,元刷新标头也将不起作用,因为页面将首先缓存而没有标头。
是否有任何方法可以缓存登录页面,但如果用户登录,也可以重定向,而不使用查询参数,或者条件 GET 是唯一的方法吗?
我想为我们的 asp.net mvc 站点的登录页面使用页面缓存。此页面仅供匿名用户访问。但是,如果用户已登录,我希望此页面重定向到经过身份验证的用户主页。
问题是,如果我缓存登录页面,登录用户仍然可以访问此页面,因为它已缓存在他们的浏览器上。
显然,如果用户经过身份验证,元刷新标头也将不起作用,因为页面将首先缓存而没有标头。
是否有任何方法可以缓存登录页面,但如果用户登录,也可以重定向,而不使用查询参数,或者条件 GET 是唯一的方法吗?
您可以使用带有 VaryByCustom 参数的OutputCacheAttribute。
如果将其设置为“IsAuthenticated”之类的内容,然后在 Global.asax 文件中定义GetVaryByCustomString方法,并根据用户是否经过身份验证返回字符串“True”或“False”。
事实上,以下博客文章回答了您的确切问题:阅读本文