首页 > 解决方案 > Laravel 会话处理无需登录即可重定向

问题描述

嗨,我有一个登录表单,只有当用户登录时,它才应该打开页面,即如果用户直接输入 url,它应该重定向回登录页面。在 laravel 我读到有 Auth::check() 但我使用 auth.php 进行不同的登录,并且工作正常。但是我创建了新的登录页面,因为我无法使用 auth.php 我如何继续查看是否设置了会话,如果没有重定向到 laravel 中的登录页面;

<?php
class TelecallController extends BaseController {

    public function __construct() {
       $this->beforeFilter(function () {
            if(!Session::has('telecall_id'))
            {
             return Redirect::to('/8032/telecalls/login');
            }
        }, array('except' => array('')));
    }
}

但我收到以下错误

ERR_TOO_MANY_REDIRECTS

标签: phplaravel

解决方案


你得到的错误很简单,看:

if(!Session::has('telecall_id'))
{
   return Redirect::to('/8032/telecalls/login');
}

其结果!Session::has('telecall_id')在开始时为 TRUE。当您访问时,return Redirect::to('/8032/telecalls/login');您的会话值没有更改,telecall_id这就是您一次又一次被重定向的原因。

重定向后,您需要确保结果 if(!Session::has('telecall_id'))为 FALSE。所以 - 你需要正确设置会话值。

在这里,您将了解如何正确准备会话:https ://laravel.com/docs/5.6/session


推荐阅读