- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试安装 Laravel Passport在 Laravel 5.7.18 上使用 PHP 7.2.13。
我的应用程序使用 JavaScript(Axios 和 Vue)在自身内部使用 API
我在 JavaScript 网络应用程序中收到 401 未授权错误。我有 read the documentation并将 CreateFreshApiToken
添加到网络内核。 laravel_token
cookie 实际上是在设置自己。但是,oauth 表在数据库中是干净的。
HTTP/内核:
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,
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,
],
'api' => [
'throttle:60,1',
'bindings',
],
];
JavaScript:
axios.get("api/users/" + id).then(({ data }) => {
this.user = data;
});
Auth.php:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
路由(Api.php):
Route::middleware('auth:api')->group(function () {
Route::resource('users', 'UserController');
Route::resource('groups', 'GroupController');
// .. plus more resources
});
Axios 配置:
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
var token = document.head.querySelector('meta[name="csrf-token"]');
if (token) {
window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}
最佳答案
如果您使用用户名和密码进行初始登录,那么假设您正在构建一个有权进行用户/密码登录尝试的第一方应用程序。
It is highly recommended that if you are building a Reactive app using Angular, React.js or Vue.js then an SPA (Single Page Application) approach will yield a much more robust product.
You should note that with this particular method, if your application makes a static (none ajax request) and thus reloads in the browser, you will loose the auth token. In this case you are not playing host to an app that is by it's very definition an SPA, so if you need to retain the token between static request reloads then you need to store the token in a cookie, I suggest using a cookie rather than localStorage because the availability of localStorage is not 100% guaranteed to be at your disposal in all web browsers.
If your application is on the same domain, you do not need to use Passport. Instead native session cookie auth is perfectly fine, all you have to do is make sure you are passing the CSRF Token for post requests.
对于用户/通行证 token 授予,您应该遵循以下准则: https://laravel.com/docs/5.7/passport#password-grant-tokens
根据该指南,当您向 /oauth/token
发出成功请求时,返回的 token 应在您的应用程序中设置为带有 Bearer token 的 Authorization
header 。
token 请求响应如下所示:
{
"token_type": "Bearer",
"expires_in": 31536000,
"access_token": "eyJ0eXAiOiJKVJhb...nheKL-fuTlM",
"refresh_token": "def502008d6313e...94508f1cb"
}
您应该按如下方式请求和处理该 JSON 对象:
axios.post('/oauth/token', {
grant_type: "password",
client_id: "1",
client_secret: "zkI40Y.......KvPNH8",
username:"email@address.com",
password:"my-password"
}).then( response => {
axios.defaults.headers.common['Authorization'] = `Bearer ${response.data.access_token}`
} );
client_id (id) 和client_secret 的值来自oauth_clients 表,应该已经有一个条目在那里。
如果没有则运行 php artisan passport:client --password
不要忘记您必须配置一些 header ,查看这篇文章有一些关于 Oauth Authorization header 的相关信息: How to send authorization header with axios
关于Laravel 护照 : CreateFreshApiToken in App: Authorization Failed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53842561/
假设有一个应用程序有 10 个动态页面(可能是表单),其中 8 个页面是受限的(需要用户登录应用程序),另外 2 个页面可供匿名用户使用。 我的前端应用程序是在 Angular 2 中开发的,后端 A
我正在将 Passport-facebook 与 ExpressJS 和 PassportJS 一起使用 我想知道如何将显示参数设置为触摸,以便当我们的 Android 设备获取登录并允许应用程序所需
我有一个nodeJS应用程序(express),它有一个facebook登录。我正在使用 Passport-facebook 身份验证,如此处所述 passport-facebook 。几周前我的登录
我正在尝试了解在使用 Passport-facebook 和 Node/express 时 Facebook 身份验证如何工作。 我对回调URL 和下面的函数感到困惑。 有人可以向我解释一下设置回调U
我有一个问题 - 我正在为我的 api 使用 Laravel Passport。我需要编写测试。每当我在测试中使用 WithoutMiddleware 特性时,它都会禁用我使用的 Implicit r
我对 Telegram Bot API 有点陌生,在机器人中我想通过 Telegram Passport 验证用户的年龄 我正在尝试重新创建他们的 Javascript SDK .按钮出现并打开 Te
如 laravel-passport 中所述登录 Controller 由 php artisan make:auth 制成在我们的路由器中 web.php会有 Auth::routes();我们 c
Laravel 上有 API,它使用 Laravel Passport 进行身份验证。一切都在默认设置下运行良好。然后我们决定将访问 token 的生命周期相应地更改为 1 天和 1 个月。它导致刷新
目前我有一个使用 Laravel Passport 的 Laravel 安装(它使用 league/oauth2-server 作为服务器实现)。我想在授予 oauth2 token 时返回用户 ID
我试图实现护照 Facebook 我在 server.js 中的代码如下所示当用户通过 facebook 点击登录时使用的路由 router.get('/auth/facebook',
我正在使用 laravel v5.8、VueJS 和 passport v7.4 进行身份验证。下面是我的登录函数: public function login(Request $request)
我尝试在 heroku 上安装我的应用程序。这个应用程序是一个 php-laravel 应用程序,带有用于身份验证的“护照”。在我的本地机器(mac os)上一切正常。 当我尝试与 postman 进
我参加 NodeJS 类(class)和观看教程有一段时间了,并决定在应用中充分利用它们。 对于这个项目,我需要用户注册和登录,以便将他们的事件存储在数据库中。这个过程我是用Passport做的,这部
我正在尝试使用 Passport-local 来限制对网站的访问。 为此,我使用login_app来运行passport-local,但这本身就是从主app.js调用的路由。当尝试在第二层(护照文件/
在我使用护照注册用户并在数据库中查看用户后。我尝试登录,但收到消息“未经授权”。这是我的登录方法: public function login(){ if(Auth::attempt(['em
我看了很多关于 Laravel passport 的文章和视频,但仍然无法理解一些东西。 我有一个适用于 Laravel 5.5 + vueJs 的应用程序。所有对后端的请求都是通过 axios 发送
所以我想对我的 API 端点进行单元测试。我正在使用 Laravel 5.8 并且 api 身份验证是使用 Passport 完成的我有以下测试: public function guest_can_
我想知道当从 API 调用中注销用户时,在 Laravel 护照的oauth_access_tokens 表中管理 token 的最佳方法是什么? 目前我只为token设置了8小时的有效期,并把所有的
CreateFreshApiToken,一旦添加到 Kernel.php 中的“web”中间件组,应该附加 laravel_token cookie 以响应通过 web 中间件发出的每个请求,不是吗?
我正在尝试安装 Laravel Passport在 Laravel 5.7.18 上使用 PHP 7.2.13。 我的应用程序使用 JavaScript(Axios 和 Vue)在自身内部使用 API
我是一名优秀的程序员,十分优秀!