这快把我逼疯了...一切都应该是正确的,我总是得到未经授权的错误在我的API路由!
Api.php路由:
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
注册控制器:
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'api_token' => Str::random(80),
]);
}
数据库:
请求:
接受应用/json设置为:
我也尝试使用jQuery来请求一个查询参数api_key但它也不起作用!!
我搜索了很多,但无法解决这个问题。我有另一个新的应用程序与Laravel和auth,它的作品完美,但这个项目是旧的,我最近更新到Laravel 7,我不知道为什么这不工作。
更多信息:
Im使用php artisan serve为应用程序提供服务。
我的kernel.php:
<?php
名称空间App\Http;
使用照明\Foundation\Http\Kernel作为HttpKernel;
类内核扩展HttpKernel{/***应用程序的全局HTTP中间件堆栈。**这些中间件在对应用程序的每个请求期间运行。**@var array*/protected$middleware=[\App\Http\Middleware\TrustProxies::class\App\Http\Middleware\CheckFormIntenanceMode::class\Illumb\Foundation\Http\Middleware\ValidatePostSize::class\App\Http\Middleware\TrimStrings::class\Illumb\Foundation\Http\Middleware\ConvertEmptyStringsToull::class];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:60,1',
'bindings',
'auth:api',
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
'language' => \App\Http\Middleware\GetRequestLanguage::class,
'setLocale' => \App\Http\Middleware\SetLocale::class,
];
/**
* The priority-sorted list of middleware.
*
* This forces non-global middleware to always be in the given order.
*
* @var array
*/
protected $middlewarePriority = [
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\Authenticate::class,
\Illuminate\Routing\Middleware\ThrottleRequests::class,
\Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\Illuminate\Auth\Middleware\Authorize::class,
];
}
谢谢是你...我希望你能帮我...
这是因为您没有随请求发送授权令牌。
如果您有您的令牌,那么在您的请求头中包括授权
axios({method: 'get', url: 'api/user', headers: {
'Authorization': 'Bearer ' + yourToken,
}})
.then((response)=>{
console.log(response.data)
})
我之所以这样说,是因为api通常需要额外的步骤才能工作,但如果它在get参数中工作,那么这就是您所需要的
或者更好的是,在默认情况下为所有请求传递它
//js/main.js
axios.defaults.headers.common = {
'X-CSRF-TOKEN': your_csrfToken,
'X-Requested-With': 'XMLHttpRequest',
'Authorization': 'Bearer ' + yourToken,
};
我找到了解决办法。
当我从Laravel 6升级到7时,我没有在auth.php改变这个:
从“散列”=
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
你只需要在邮递员中发送你的令牌作为正文,就像这个通过邮递员发送身份验证的示例图片一样,你必须在正文中发送你的令牌(表单数据),并且令牌的密钥必须api_token
所以,我试图用Tweepy喜欢一个推文,但是这个错误正在发生: 有什么想法吗?
我正在使用postman,并尝试通过http://localhost:8180/auth/admin/realms/demo/users/{userID}更新用户的配置文件,但收到响应。 通过http://localhost:8180/auth/admin/realms/demo/users/{userID}发送带有Json内容类型和用户信息的Put请求。 不幸的是,我已经连续收到了401个回复。
我的代码:GoogleCredential凭据 credential.refreshToken() 错误日志: 创建服务号的步骤: 我在凭据中的oauth 2.0中创建了一个Web应用程序 然后我用客户端ID创建了一个服务号 现在我正在使用这个服务号和从它生成的p12证书来验证和创建Google凭据的对象 一旦刷新令牌,我就给了我401例外。 在这种情况下,任何帮助都会受到感激
问题内容: 我正在使用GCM服务从服务器推送信息。如果我使用浏览器密钥,它将成功消息显示为: {“ multicast_id”:4849013215736515938,“ success”:1,“ failure”:0,“ canonical_ids”:0,“ results”:[{“ message_id”:“ 0: 1348742583011905%2adac3a0f9fd7ecd“}]},
在这个留档Spring Security MVC Test中描述了如何使用Spring Security测试安全的ressource。我遵循了提供的所有步骤,但访问受保护的ressource仍然会返回错误代码401(未经授权)。 这是我的测试课 我的资源服务器配置: 如果你想看看整个项目,你可以在这里找到。我已经尝试了不同的测试运行程序和教程中描述的所有内容,但我找不到一个解决方案,如何在测试期间
我使用spring ide在本地机器嵌入式apache服务器上部署了spring boot web应用程序,并访问了一个带有错误令牌的url,在这种情况下,它会返回未经授权的访问错误401和托管异常处理抛出的特定错误消息,而如果我在独立但相同的apache服务器上部署相同的应用程序,它会给我500个内部服务器错误而不是401或任何其他服务器端错误。 我捕获的日志只有以下一行不同: 下面是我用来处理