0

我将 laravel 用于我的 Web 应用程序。

登录路由由两种方法处理
LOGIN::GET -> 显示页面以使用表单获取登录凭据。
LOGIN::POST -> 如果凭据有效,则获取发布的数据、验证并重定向到管理员主页。

注销只是清除会话并重定向到 Login::Get。

管理路由具有执行身份验证的 before 过滤器。如果用户已登录,则会显示管理员的主页。

当我执行以下步骤时会弹出问题,
第 1 步:访问登录页面,输入凭据并提交。
第 2 步:验证凭据并显示管理员主页。
第 3 步:我很高兴地退出应用程序并看到登录页面。
第 4 步:按返回按钮。问题开始了,我看到了管理员的主页。

但是在我注销后,如果我输入管理员的主页 URL 并输入,我会正确地重定向到登录页面。这只发生在浏览器后退按钮上。

如果这是浏览器缓存问题,我该如何控制?即使按下后退按钮,如何触发前置过滤器?

4

3 回答 3

1

是的,很确定它只是浏览器缓存。当您注销时,您是重定向到登录页面还是只是返回登录页面?始终重定向,可能会解决您的问题,因为当您按下后您将获得登录操作,这将是无效的,因为您没有登录,然后转到登录操作。如果您按下两次,您可能仍然会遇到此问题,但这种情况非常罕见。

于 2013-06-07T07:58:17.920 回答
0

你可以在这里查看我的完整答案:https ://stackoverflow.com/a/26560336/434790

我试图在标记之前在我的基本模板中使用一些 javascript 代码来解决这个问题。

<script type="text/javascript">
    $(document).ready(function() {
        var isAuth = "<?php echo Auth::check(); ?>";

        if (location.href === 'http://local.myapp.in/login/')
        {
            if (isAuth) location.href('/home');
        }
        else
        {
            if (!isAuth) location.href('/login');
        }
    });
</script>

在上面的代码中,将http://local.myapp.in/login/替换为您的登录页面 URL。因此,每次加载页面时,都会执行此代码。如果用户试图在没有登录的情况下访问任何受限页面,那么他将被重定向到登录页面。如果用户在登录时试图访问登录页面,浏览器将被重定向到主页。

因为,它是 js 代码,即使页面是从浏览器缓存加载的,这段代码也会运行。

于 2014-10-25T07:49:34.100 回答
0

与codeigniter相同的问题。需要添加头部缓存控制。

于 2013-08-09T02:25:37.507 回答