Laravel 5.3 和智威汤逊。对于所有获取路线,我都会收到 "error": "token_not_provided"
Posted
技术标签:
【中文标题】Laravel 5.3 和智威汤逊。对于所有获取路线,我都会收到 "error": "token_not_provided"【英文标题】:Laravel 5.3 and JWT. I'm getting "error": "token_not_provided" for all get routesLaravel 5.3 和智威汤逊。对于所有获取路线,我都会收到 "error": "token_not_provided" 【发布时间】:2017-06-11 22:22:33 【问题描述】:我正在尝试使用 Laravel 5.3 和 Angular 2 和 JWT 来实现身份验证。
Auth 部分正在工作,我能够获取令牌,但我正在尝试导航到任何获取路线,但出现错误
代码
我已经添加了提供者和别名,以及公开了供应商文件夹并生成了 jwt 的密钥
在我的内核中我添加了这个:
'jwt.auth' => \Tymon\JWTAuth\Middleware\GetUserFromToken::class,
'jwt.refresh' => \TymonJWTAuth\Middleware\RefreshToken::class,
并已禁用 csrfToken。
这些是我的路线
Route::resource('authenticate', 'AuthController', ['only' => ['index']]);
Route::post('authenticate', 'AuthController@authenticate');
Route::post('logout', 'AuthController@logout');
还有我的 AuthController
class AuthController extends Controller
public function __construct()
// Apply the jwt.auth middleware to all methods in this controller
// except for the authenticate method. We don't want to prevent
// the user from retrieving their token if they don't already have it
$this->middleware('jwt.auth', ['except' => ['authenticate']]);
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
// Get all roles
$users = User::with('role', 'branch')->get();
// Send the response
return response()->json([
'users' => $users
], 200);
// Authentification
public function authenticate(Request $request)
// Retrieve email
$email = $request->input('email');
$credentials = $request->only('email', 'password');
try
// verify the credentials and create a token for the user
if (! $token = JWTAuth::attempt($credentials))
return response()->json(['error' => 'invalid_credentials'], 401);
catch (JWTException $e)
// something went wrong
return response()->json(['error' => 'could_not_create_token'], 500);
// Retrieve user
$user = User::where('email', '=', $email)->first();
// if no errors are encountered we can return a JWT
return response()->json(compact('token'));
// return response()->json([
// 'user' => $user,
// 'token' => compact('token')
// ], 200);
// Logout
public function logout(Request $request)
$this->validate($request, [
'token' => 'required'
]);
JWTAuth::invalidate($request->input('token'));
正如我所说,我可以在身份验证后获得令牌,但是当我使用此令牌导航到某个路线时:
Route::resource('authenticate', 'AuthController', ['only' => ['index']]);
我得到了这个结果:
"error": "token_not_provided"
enter image description here
【问题讨论】:
【参考方案1】:如果您的网络服务器是 apache。你需要添加这个
RewriteCond %HTTP:Authorization ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
到 /path/to/project/public/.htaccess
中的 htaccess 文件。
这通常是导致此错误的原因。检查此链接以获取更多信息。 https://github.com/tymondesigns/jwt-auth/wiki/Authentication
【讨论】:
以上是关于Laravel 5.3 和智威汤逊。对于所有获取路线,我都会收到 "error": "token_not_provided"的主要内容,如果未能解决你的问题,请参考以下文章
LARAVEL 5.3,获取用户名和角色名(使用 Laravel 模型关系)
如何使用获取参数将 laravel (5.3) 路由重定向到其他路由
如何使用 Request $request 从 url 获取 id? (Laravel 5.3)