当前位置: 首页 > 知识库问答 >
问题:

Laravel 5.3护照JWT认证

慕容超
2023-03-14

早些时候,当我使用Laravel5.2时,我使用了第三方软件包https://github.com/tymondesigns/jwt-auth/用于进行基于JWT的身份验证。我们只需要传递用户名和密码就可以获得令牌。

现在在laravel 5.3中,随着passport的引入,我想进行基于JWT的身份验证,但passport要求我指定客户端id和客户端密码以及用户名和密码。这在tymondesigns/jwt auth中不存在。

如果我在没有client_id的情况下提出请求,那么它会抛出一个错误http://pix.toile-libre.org/upload/original/1482908288.png但是当我通过client_idclient_secret时,它就可以正常工作http://pix.toile-libre.org/upload/original/1482908143.png

我怎么能在laravel 5.3和护照的JWT请求只有用户名和密码,而没有指定client_id和client_secret。

共有3个答案

易淳
2023-03-14

$请求-

我可以通过get Auth Bear token和Laravel获得用户详细信息:

use Illuminate\Support\Facades\Auth;

Route::get('/user', function() {
   return Auth::guard('api')->user();
});
徐欣德
2023-03-14

如果你对OAuth和客户端不感兴趣,你可能想使用纯JWT身份验证,如果是,你可以查看这个包:

https://github.com/miladrahimi/larajwt

它声明了一个名为“jwt”的新身份验证驱动程序,以保护经过身份验证的路由,它提供了一个从用户生成jwt的服务,以及一些其他工具,如注销、用户模型缓存、用于检查用户额外属性的过滤器等。

洪俊捷
2023-03-14

所以,最后我要回答我自己的问题。希望这能帮助面临类似问题的人。

JWT身份验证可以使用Laravel 5.3 passport完成,只需执行以下步骤:

  • 按照此链接中的描述正常安装Passporthttps://laravel.com/docs/master/passport#installation

或者遵循以下步骤:

  • 作曲者需要laravel/护照

完成后,创建UserController并在其中添加以下方法:

public function auth(Request $request)
{

  $params = $request->only('email', 'password');

  $username = $params['email'];
  $password = $params['password'];

  if(\Auth::attempt(['email' => $username, 'password' => $password])){
    return \Auth::user()->createToken('my_user', []);
  }

  return response()->json(['error' => 'Invalid username or Password']);
}

  public function index(Request $request)
  {
    return $request->user();
  }

在路由/api中。在php中,添加以下路由:

Route::post('auth', 'UserController@auth');

Route::group(['middleware' => 'auth:api'], function(){

  Route::resource('user', 'UserController@index');

});

现在向http://localhost:8000/auth,电子邮件地址和密码如屏幕截图所示(http://pix.toile-libre.org/upload/original/1483094937.png)这将获得accessToken,您可以使用此token在应用程序中通过授权头和承载XXX发出其他请求,其中XXX是您从/api/authendpoint收到的accessToken。

现在,使用授权头和令牌值向/api/user发出GET请求,这将返回经过身份验证的用户的详细信息。(例如:http://pix.toile-libre.org/upload/original/1483095018.png)

我也在我的博客上发布了这些步骤http://chatterjee.pw/larvel-passport-jwt-authentication/

我希望这能有所帮助!

 类似资料:
  • 问题内容: 如何在成功进行身份验证时结合本地护照以返回JWT令牌? 我想使用node-jwt-simple并查看passport.js,我不确定该怎么做。 调用done()时是否可以返回令牌?像这样…(只是伪代码) 如果没有,我该如何退还令牌? 问题答案: 我想到了! 首先,您需要实施正确的策略。就我而言,是LocalStrategy,您需要提供验证逻辑。例如,让我们在护照本地使用一个。 您提供的

  • 问题内容: 我正在编写一个想同时用作Web应用程序和API提供程序的nodejs应用程序。验证用户身份后,我想为该用户分配一个令牌,以用于后续请求。这对于Web应用程序的通行证非常有用,因为我只是在会话中使用令牌对用户进行序列化和反序列化。但是,在响应API请求时,没有用于设置存储会话信息的cookie。理想情况下,护照将在会话和请求正文中都寻找令牌。有什么方法可以配置通行证来完成此任务吗? 问题

  • 突然,当尝试通过护照创建JWT时,我开始在生产中遇到此错误,运行在Ubuntu / apache2上。据我所知,服务器上没有任何更改,没有安装,没有部署,它只是停止工作。 PHP 7.3 OpenSSL 1.0.1f Laravel 5.8 我还注意到这个错误的另一个版本。没有什么变化,所以我不知道为什么会出现这种错误。 注意这一点:

  • 我正在使用Laravel passport进行API身份验证,当我将其与一个DB一起使用时,它可以完美地工作,但当使用多个数据库时,它会给出, 我正在做的事情: > 我有一个多租户数据库,主数据库有用户、角色和所有OAuth表。 当我创建一个具有管理员角色的用户时,它将创建具有管理员名称的新数据库,它将创建包含用户、角色和所有OAuth表的子数据库。的子数据库将从主数据库复制密码授予令牌和个人访问

  • 我正在处理一个在平均堆栈上运行的Web应用程序(遵循TraversyMedia教程)。然而,我遇到了一个问题,这里提供的任何解决方案似乎都不适合我。每当我尝试访问我的/个人资料页面(除非您获得授权,否则该页面将受到保护)时,我都会收到返回的错误。但是,我已登录并拥有正确的访问令牌。 我已经看了护照jwt git。但是我所拥有的似乎是匹配的。我尝试过使用: 目前正在使用:ExtractJwt。fro

  • 我试图做api-auth通过检查生成令牌从登录用户的用户名与md5加密方法在laravel 5.5飞,不想保存令牌到用户的表。当用户注销时,令牌将无效。URL将是这样的: http://myserver.com/products?token=...... 我该怎么做? 新增-这是第44届世界技能大赛的测试项目,以下为测试项目文件: 认证 A.登录(v1/auth/登录) 描述:供客户端通过用户名和