【问题标题】:Laravel - How to use Auth::check or Auth::user between different domains?Laravel - 如何在不同域之间使用 Auth::check 或 Auth::user?
【发布时间】:2020-11-05 00:42:47
【问题描述】:

我有一个关于 laravel 框架(版本 5.2)和身份验证的问题。 我有 2 个代表软件的域。我们称他们为https://azure.mydomain.comhttps://azuresoftware.mydomain.com

laravel 应用程序托管在域 https://azuresoftware.mydomain.com 上。 https://azure.mydomain.com 只是一个 cms 框架,它提供有关网站的一些信息。

现在我想显示不同的菜单,如果用户在https://azure.mydomain.com 上登录或未登录。 我想,我可以向https://azuresoftware.mydomain.com/ 发出fetch 请求并使用laravel 方法Auth::check() 检查用户是否已经登录。我知道这是一个cors 获取请求,但这不是问题。我已经允许来自https://azure.mydomain.comIIS 网络服务器请求。该请求工作正常,也只是一个简单的请求。 但实际上Auth::check() 总是返回false,即使我在软件端登录也是如此。

这是我目前的代码:

<script>
    fetch('https://azuresoftware.mydomain.com/checkLogin', {
        method: 'GET', 
        headers: { 
            'Content-Type': 'text/plain'
        }
    })
    .then(function(res) { 
        return res.json()
    })
    .then(function(data) { 
        if(data.isLoggedIn) {
            // do some stuff...
        }
        else 
        {
            // do some other stuff...   
        }
    });
</script>

routes.php:

Route::group(['middleware' => 'web'], function () {
...
    Route::get('checkLogin', function() {
        return json_encode(['isLoggedIn'=>\Auth::check()]);
    });
...

我确定,我忘记了一些重要的东西,为什么它不能以这种方式工作,所以我很高兴有任何提示。非常感谢!

【问题讨论】:

    标签: laravel authentication laravel-5 cors


    【解决方案1】:

    这是因为 AJAX 调用仅在您调用的 url 与调用脚本位于同一域时才会发送 cookie。

    更多信息请参见Cross domain POST request is not sending cookie Ajax Jquery

    【讨论】:

      猜你喜欢
      • 2016-02-02
      • 2020-09-05
      • 2020-04-20
      • 2023-04-04
      • 2014-11-19
      • 2018-12-19
      • 2015-04-28
      • 2018-01-14
      • 2016-05-07
      相关资源
      最近更新 更多