Php 如何绕过通常的Laravel身份验证过程,将用户设置为已登录

Php 如何绕过通常的Laravel身份验证过程,将用户设置为已登录,php,session,authentication,laravel-5,Php,Session,Authentication,Laravel 5,我正在构建一个新的Laravel应用程序(v5.4),它将与(安装在同一环境中)一个拥有自己的身份验证系统的现有PHP应用程序一起运行。我希望成功登录到现有系统的用户能够在Laravel应用程序中自动进行身份验证,以便他们能够在应用程序之间无缝导航 我的Laravel应用程序对现有系统的数据库具有只读访问权限(通过第二个db连接),因此它可以安全地检查PHP会话是否与数据库中记录的会话cookie匹配,我甚至可以拉出用户对象并将其交给Auth的login()方法 我想知道将Auth置于授权状态(

我正在构建一个新的Laravel应用程序(v5.4),它将与(安装在同一环境中)一个拥有自己的身份验证系统的现有PHP应用程序一起运行。我希望成功登录到现有系统的用户能够在Laravel应用程序中自动进行身份验证,以便他们能够在应用程序之间无缝导航

我的Laravel应用程序对现有系统的数据库具有只读访问权限(通过第二个db连接),因此它可以安全地检查PHP会话是否与数据库中记录的会话cookie匹配,我甚至可以拉出用户对象并将其交给Auth的
login()
方法

我想知道将Auth置于授权状态(而不是来宾)的最佳方法,以及放置此类代码的最佳位置在哪里

到目前为止我一直在尝试的选项:

  • 中间件:检查会话并从某个应用程序范围的中间件调用Auth上的login()方法
  • 是否扩展/Auth/SessionGuard.php并重写trument()方法?如果是这样,我如何告诉其他部分使用我的扩展SessionGuard?(我怀疑这不是为了容易被推翻而设计的)
  • 超级骇客讨厌的方式动态设置用户的密码为随机散列,然后调用Auth/LoginController@login()在后台使用包含该哈希作为密码字段的伪造请求。(我真的希望这不是最流行的答案)
  • 其他一些选择(?)

提前感谢您对SO社区的帮助

我最后使用的解决方案是创建一个包含以下内容的中间件:

if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

if (isSet($_SESSION['intranet_user_id']) && $_SESSION['intranet_user_id']) {

    // Log them in manually
    $intranet_user_id = $_SESSION['intranet_user_id'];
    if (!Auth::guest() && Auth::user()->getId() !== $intranet_user_id ) {
        Auth::logout();
    }

    if (Auth::guest()) {
        Auth::login( User::find($intranet_user_id), true);
    }
} else {
    Auth::logout();
}