【问题标题】:having anonymous user on laravel在 laravel 上有匿名用户
【发布时间】:2019-08-08 21:55:14
【问题描述】:

我正在使用 Laravel 5.8。我创建了一个使用 jwt 的自定义 Guard。我用作验证用户的中间件。 我有一些路由需要根据经过身份验证的用户或未经身份验证的用户做出不同的响应。你建议我怎么做?实现这一点的最佳做法是什么?

我可以定义一个自定义守卫,它的检查函数始终返回 true。并在用户未通过身份验证时为未经身份验证的用户返回一个类似于 -1 的整数。但这听起来不是一种干净的实现方式。

【问题讨论】:

  • 使用Auth::guest()

标签: laravel authentication jwt


【解决方案1】:

根据您的设置方式,您可以在控制器方法中使用 Auth 外观助手来查看用户是否经过身份验证:

// SomeController.php
public function index(Request $request)
{
    if(Auth::guest()) {
        return response()->json('i am a guest');
    } else {
        return response()->json('im not a guest');
    }
}

或使用任何相关方法:

    // Inverse of `Auth::guest()`
    $isLoggedIn = Auth::check();
    $loggedInUser = Auth::user();

https://laravel.com/api/5.8/Illuminate/Auth/GuardHelpers.html

【讨论】:

  • 谢谢。但问题是,如果我不添加保护中间件,则 Auth::id() 并且不会工作,如果我添加中间件。中间件不允许访客访问网址
  • 这取决于你的后卫的样子。对当前用户进行身份验证和允许访问路由是有区别的。
猜你喜欢
  • 2017-08-24
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
  • 1970-01-01
  • 2021-10-27
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多