热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

无法通过我的Lumen后端访问JavascriptWeb令牌

我正在关注本教程

我正在关注本教程https://medium.com/tech-tajawal/jwt-authentication-for-lumen-5-6-2376fd38d454,以了解如何为我的管腔后端设置基于令牌的身份验证。

到目前为止,一切正常。直到最后,我才无法获得代币Oo
我认为我的代码没有任何问题。
使用RESTClient进行http请求时:“ http://localhost:8080/users”
我得到了所需的“'错误':'未提供令牌'”

但是,当我尝试按照本教程中的说明获取令牌时,出现错误,提示未提供名称和电子邮件字段。
这是我的控制器代码(或本教程中的代码),用于评估对传输的名称和电子邮件值的请求:

namespace App\Http\Controllers;
use Validator;
use App\User;
use Firebase\JWT\JWT;
use Illuminate\Http\Request;
use Firebase\JWT\Expiredexception;
use Illuminate\Support\Facades\Hash;
use Laravel\Lumen\Routing\Controller as BaseController;
class AuthController extends BaseController
{
/**
* The request instance.
*
* @var \Illuminate\Http\Request
*/
private $request;
/**
* Create a new controller instance.
*
* @param \Illuminate\Http\Request $request
* @return void
*/
public function __construct(Request $request) {
$this->request = $request;
}
/**
* Create a new token.
*
* @param \App\User $user
* @return string
*/
protected function jwt(User $user) {
$payload = [
'iss' => "lumen-jwt",// Issuer of the token
'sub' => $user->id,// Subject of the token
'iat' => time(),// Time when JWT was issued.
'exp' => time() + 60*60 // Expiration time
];
// As you can see we are passing `JWT_SECRET` as the second parameter that will
// be used to decode the token in the future.
return JWT::encode($payload,env('JWT_SECRET'));
}
/**
* Authenticate a user and return the token if the provided credentials are correct.
*
* @param \App\User $user
* @return mixed
*/
public function authenticate(User $user) {
$this->validate($this->request,[
'email' => 'required|email','password' => 'required'
]);
// Find the user by email
$user = User::where('email',$this->request->input('email'))->first();
if (!$user) {
// You wil probably have some sort of helpers or whatever
// to make sure that you have the same response format for
// differents kind of responses. But let's return the
// below respose for now.
return response()->json([
'error' => 'Email does not exist.'
],400);
}
// Verify the password and generate the token
if (Hash::check($this->request->input('password'),$user->password)) {
return response()->json([
'token' => $this->jwt($user)
],200);
}
// Bad Request response
return response()->json([
'error' => 'Email or password is wrong.'
],400);
}
}

这是中间件的代码:

namespace App\Http\Middleware;
use Closure;
use Exception;
use App\User;
use Firebase\JWT\JWT;
use Firebase\JWT\Expiredexception;
class JwtMiddleware
{
public function handle($request,Closure $next,$guard = null)
{
$token = $request->get('token');
if(!$token) {
// Unauthorized response if token not there
return response()->json([
'error' => 'Token not provided.'
],401);
}
try {
$credentials = JWT::decode($token,env('JWT_SECRET'),['HS256']);
} catch(Expiredexception $e) {
return response()->json([
'error' => 'Provided token is expired.'
],400);
} catch(Exception $e) {
return response()->json([
'error' => 'An error while decoding token.'
],400);
}
$user = User::find($credentials->sub);
// Now let's put the user in the request class so that you can grab it from there
$request->auth = $user;
return $next($request);
}
}

我已经在bootstrap / app.php中注册过:

$app->routeMiddleware([
'jwt.auth' => App\Http\Middleware\JwTMiddleware::class,]);

但是我的JSON有效负载看起来像这样,所以应该可以工作。

[
{
"email": "ibeier@hotmail.com,"name": "Eusebio Dach",}
]

但是,我必须承认,本节中的教程在细节上有些欠缺。
这是我无法工作的(最后)部分:


为了使此私密请求成功,我们需要提供令牌作为查询参数。我们可以通过在Postman应用程序中点击以下路线http://localhost:8000/auth/login来获得令牌。现在,您已经打开了私密失败请求的令牌,这次在“参数”部分中创建一个密钥令牌,并将其值设置为您在上一个请求中收到的令牌。然后将请求发送到http://localhost/users路由,您将得到用户列表作为响应。
(带有用户数据的屏幕截图,请参阅教程)
到此为止。如有任何疑问,请在下面留下您的评论。

我不确定是否提供了正确的请求数据,以及是否正确设置了所有标头。
也许对此有更多了解的人可以帮助我理解我所缺少的东西。
我已经尝试过研究其他教程,但是这些教程对内腔采用了不同的jwt扩展,并且似乎在其控制器代码中也采用了其他方法。
我非常想遵循本教程,因为它的方法对我而言似乎很简单。
如果有人可以告诉我该教程对他们有用,并且除了通过教程提供的说明之外,还可以告诉我他们做了什么,这也将有所帮助。
因为那样的话,我将再次进行本教程,看看是否可以使它正常工作。





推荐阅读
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 本文介绍了一个适用于PHP应用快速接入TRX和TRC20数字资产的开发包,该开发包支持使用自有Tron区块链节点的应用场景,也支持基于Tron官方公共API服务的轻量级部署场景。提供的功能包括生成地址、验证地址、查询余额、交易转账、查询最新区块和查询交易信息等。详细信息可参考tron-php的Github地址:https://github.com/Fenguoz/tron-php。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • 本文讨论了在ASP中创建RazorFunctions.cshtml文件时出现的问题,即ASP.global_asax不存在于命名空间ASP中。文章提供了解决该问题的代码示例,并详细解释了代码中涉及的关键概念,如HttpContext、Request和RouteData等。通过阅读本文,读者可以了解如何解决该问题并理解相关的ASP概念。 ... [详细]
  • SpringMVC工作流程概述
    SpringMVC工作流程概述 ... [详细]
  • Conflictwithfirebase11.8.0andgoogle-servicesplugin3.1.2 ... [详细]
author-avatar
阳光明媚-在路上
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有