我有兴趣在退出后禁止以下内容:
- 没有后退按钮
- 无法通过URL直接访问页面 - 例如:如果用户注销,则不应允许他们使用某个URL查看缓存页面(例如,使用网站中的有效URL替换URL {{ 3}})
我见过类似这样的问题:http://mysite.com/Gotothispage.aspx
我知道我可以在母版页上没有设置缓存,但是当用户实际登录时我失去了使用后退按钮的能力。我对此理解是否正确?
答案 0 :(得分:2)
页面可缓存或不可缓存,浏览器不知道您是否已登录。你不能以某种方式追溯到已经被浏览器缓存的对象过期。
答案 1 :(得分:0)
如果安全设置正确,则应该在注销后禁用页面。
如果您有专门为登录用户设置的母版页或基页类,则应检查他们是否具有您在登录时设置的sessionId。
如果没有,请将它们重定向到另一页。
用户可能会看到页面的缓存版本,但无法对其执行任何操作。
在我的成员基页类中,我检查他们是否登录OnInit事件:
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (!IsLoggedIn)
{
Response.Redirect("default.aspx");
}
}
编辑:
一些网站所做的是......在您关闭此人之后,他们会将您重定向到一个临时的炼狱页面,该页面表明它正在关闭您。此炼狱页面将关闭缓存,并具有元刷新标记,可将您带到目标页面。
因此,当用户点击后退按钮时,它会将他们带到炼狱页面,然后将他们引导回原来的位置。
Gmail可以做到这一点,但有时它会如此之快,你无法分辨。
答案 2 :(得分:0)
然后我失去了使用它的能力 当用户实际上是后退按钮 登录。我是否正确 理解?
不完全 - 在使用POST提交的页面上使用后退按钮时会遇到问题,而不是GET。
一个简单的例子是想象一个带有分页Gridview的ASP.NET页面 - 用户点击页面1,2,3,4,5等来导航网格。
使用POST,每次用户点击网格中的另一个页面时,都会导致回发到同一页面。如果用户在执行此操作后单击,则会出现页面过期错误。
使用GET,每次用户点击网格中的另一个页面时,它都会使用查询字符串将它们重定向到同一页面(即Grid.aspx?Page = 2)。在这种情况下,用户可以单击返回,它会将它们带到上一页而没有任何问题。