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

Laravel Passport CreateFreshApitonk初始登录

伯和蔼
2023-03-14

我有一个Vue CLI前端,所以我试图使用Laravel Passport来处理请求的身份验证。

https://laravel.com/docs/5.7/passport#consuming-使用javascript创建api

我有一个api/login路由,它执行以下操作(几乎从这里复制和粘贴):

public function login(){ 
  if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){ 
    $user = Auth::user(); 
    $success['token'] =  $user->createToken('MyApp')->accessToken; 
    return response()->json(['user' => $user], $this->successStatus);
  } 
  else{ 
    return response()->json(['error'=>'Unauthorised'], 401); 
  } 
}

在我发出AJAX请求后,用户成功登录。

但是如果我在我的Vue行动中做这样的事情:

login({commit, dispatch}, {email, password}){
  axios.post('/api/login', {
    email, password 
  }).then( response => {
    console.log("Check login was successful", response.data);
    commit('setUser', response.data);
    axios.get("/api/user").then(response => {
      console.log("Still logged in:", response);
    });
  });

控制台显示以下内容:

Check login was successful {user: {…}}
GET http://localhost:8080/api/user 401 (Unauthorized)

Laravel医生说...

此Passport中间件会将laravel_令牌cookie附加到您的传出响应中。

我做错了什么/如何访问此laravel\u令牌以备将来的请求?

共有1个答案

蒋星雨
2023-03-14

我通过以下方法解决了这个问题。

我已经在创建accessToken,但从未将其发回。因此,第一步:

if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){ 
  $user = Auth::user(); 
  $accessToken =  $user->createToken('MyApp')->accessToken; 
  return response()->json(compact('user','accessToken'), $this->successStatus);
} 

然后在我的Axios请求中:

axios.post('/api/login', {
    email, password 
  }).then( response => {
    // Send the auth token every time : )
    axios.defaults.headers.common['Authorization'] = "Bearer " + response.data.accessToken;
    commit('setUser', response.data.user);
  });
 类似资料:
  • 本文向大家介绍初始Nodejs,包括了初始Nodejs的使用技巧和注意事项,需要的朋友参考一下 基本概念 Node.js,或者 Node,是一个可以让 JavaScript 运行在服务器端的平台。可以说,Node.js开创了javascript模块化开发的先河,早期的javascript需求都很简单,基本都是写成函数的,然后是面向过程的写法,后来慢慢的引入面向对象开发思想,再后来就慢慢写成 类。最

  • Initialization 初始化 Although it doesn’t look superficially very different from initialization in C or C++, initialization in Go is more powerful. Complex structures can be built during initialization a

  • 初始化是为类、结构体或者枚举准备实例的过程。这个过需要给实例里的每一个存储属性设置一个初始值并且在新实例可以使用之前执行任何其他所必须的配置或初始化。 你通过定义初始化器来实现这个初始化过程,它更像是一个用来创建特定类型新实例的特殊的方法。不同于 Objective-C 的初始化器,Swift 初始化器不返回值。这些初始化器主要的角色就是确保在第一次使用之前某类型的新实例能够正确初始化。 类类型的

  • new iSlider(DOM, DATA, OPTIONS) Name Type Description DOM dom 容器dom节点 DATA Array 数据列表 OPTIONS Object 配置项 DOM new iSlider(DOM, DATA, OPTIONS); {HTMLElement} 容器dom节点 作为第一个参数并不是必须的,会被OPTIONS.dom覆盖,但是这十分必

  • 确认初始化操作 1)初始化操作用来清空此统计ID的统计数据 2)与启用新的统计ID不同的是,初始化操作使您不需更换网站上的统计代码就可以重新开始统计 注意:初始化操作将清除此统计ID的所有统计数据,此操作不可恢复!!!

  • 创建版本库 git 基于文件夹(工作树)进行版本控制,在一个文件夹中创建 git版本库: $ cd project/ $ git init Initialized empty Git repository in .git/ 输出信息:在当前文件夹的 .git/ 目录下创建版本库 将文件提交到 git索引: git add file1 file2 file3 …… 更方便的作法是