我使用 laravel/passport 进行 api 身份验证。我的问题是,当我想通过 Postman 在本地主机上注册为新用户时,一切正常,但实时服务器上的相同代码返回如下所示的内容:
尝试获取非对象“异常”的属性:“ErrorException”,“文件”:“/vendor/laravel/passport/src/ClientRepository.php”,“line”:89,
我的用户注册代码如下:
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => bcrypt($request->password),
'phone_number' => $request->phone_number,
]);
$success['name'] = $user->name;
$success['token'] = $user->createToken('Test')->accessToken;
return response()->json(['success' => $success], 200);
Run Code Online (Sandbox Code Playgroud) 如何使用 Laravel 5.6 护照从其他表(访客,而不是用户)和不同的守卫(访客)制作登录 API 令牌。
当我使用默认的 laravel 身份验证表(用户)时它可以工作,但我需要从访问者表登录。
这是我的 auth.php
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
'visitor' => [
'driver' => 'session',
'provider' => 'visitors',
],
'visitor-api' => [
'driver' => 'passport',
'provider' => 'visitors',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'visitors' => [
'driver' => 'eloquent',
'model' …Run Code Online (Sandbox Code Playgroud) 如何通过在 Laravel 中传递令牌来获取用户 ID?我想从请求中获取用户令牌,然后将用户头像发送给他。
我开发了一个使用 Laravel 作为 API 的 React 应用程序。我已经通过 Passport 添加了登录信息,并且非常成功地使用了个人访问客户端方法。我可以添加新用户和令牌,我可以撤销令牌,我可以重置密码...所有 API 调用(登录和注册除外)都由 API 中间件保护并且可以正常工作。如果我从任何这些调用的标头中删除 ,Bearer ${token}由于 ->middleware('auth:api') 包装器,它会返回 401 unauthenticated。
一切都完全按预期进行......直到我将所有内容移至我的 Raspberry Pi 服务器。当我移动所有东西时,问题就开始了。我可以登录并且可以注册,但是一旦我在流程中后续的任何端点调用上使用新的不记名令牌(我从登录或注册调用中收到的),它就会失败并显示 401 未经身份验证,立即地。我运行了php artisan passport:client --personal命令并像往常一样成功地将 id 和密钥输入到我的 .env 文件中。我安装了所有的作曲家和供应商包。我安装了所有的 Passport 包和 CLI 命令。
它仅在使用 auth 中间件的调用上失败。
我做了一些挖掘,似乎我能发现的唯一(显着的)变化是 Pi 运行 32 位 PHP,而我的本地主机运行 64 位 PHP。除此之外,它的代码、数据库、Laravel 和 PHP 版本都相同。
我尝试使用该命令php artisan passport:client --personal --name="app-name" --redirect_uri="http://192.168.1.1/"将记录放入“oauth_clients”表中,但将重定向显示为http://localhost/. 然后,我尝试使用 SQL 手动将名为“redirect”的列的值更改为http://localhost/......但更改又没有任何作用。调用仍会返回 401 未经身份验证。
我能发现的唯一可能存在问题的其他事情是:
apache authentication laravel laravel-passport raspberry-pi4
我正在使用密码授予令牌为移动应用程序构建API .当用户尝试登录应用程序时,客户端会发送访问令牌请求.
用户可能没有使用发送到他的电子邮件的链接验证他的帐户.我希望为查询添加一个附加条件,并相应地提供错误响应.目前,由于Passport管理令牌部分,我无法直接执行.
怎么解决这个问题?如果用户帐户有任何问题,我如何潜入令牌请求并发送自定义响应?并继续发送令牌.
我正在使用 Laravel 5.5 进行 API 开发,我们如何使用 Laravel 护照注销用户?它与网络中的注销相同还是有任何区别?提前致谢。
我的项目正在运行Laravel 5.4,我通常使用passportapi通过api进行身份验证bearer token。一切正常,但是当未经授权的用户尝试访问需要身份验证的资源时,该用户会收到错误消息405 method not allowed

但我希望得到回应401 unauthorized。如何更改此设置,仅发送带有消息的响应,而不发送异常?我做了调查,但没有发现任何东西。我使用标准laravel中间件授权auth:api。我的路线归入中间件
Route::group(['middleware' => 'auth:api'], function () {
// these routes should return 401 if user not authenticated
}
Run Code Online (Sandbox Code Playgroud) 我已经在laravel中使用passport api进行了登录功能,并且状态为200,问题是我不知道如何在成功请求后登录用户并重定向到主页(我正在使用vuejs组件)。
controller
public function login(Request $request)
{
$credentials = [
'email' => $request->email,
'password' => $request->password
];
if (Auth::attempt($credentials)) {
// $token = auth()->user()->createToken('AppName')->accessToken;
// $success['token'] = $token;
// $success['name'] = auth()->user()->name;
// $success['id'] = auth()->user()->id;
$user = Auth::user();
$success['token'] = $user->createToken('AppName')->accessToken;
$success['user'] = $user;
return response()->json(['success'=>$success], 200);
} else {
return response()->json(['error' => 'UnAuthorised'], 401);
}
}
Run Code Online (Sandbox Code Playgroud)
component script
<script>
import {login} from '../../helpers/Auth';
export default {
name: "login",
data() {
return { …Run Code Online (Sandbox Code Playgroud) 我只是cloned一个repo一个Laravel 5.7 project和我有一些麻烦我的机器上运行它。
当我做一个composer install,我得到这个error:
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.
Nothing to install or update
Generating optimized autoload files
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
> @php artisan package:discover
In AuthServiceProvider.php line 35:
Class 'Laravel\Passport\Passport' not found
Script @php artisan …Run Code Online (Sandbox Code Playgroud) Auth()->check()不断返回假。该api仅具有api中间件,我希望访客和登录用户都可以使用它。
我尝试从请求标头中获取授权令牌,但是我不知道有什么方法可以检查哪个用户拥有此令牌。
if(Auth()->check()){
//return extra data
} else {
//return something else
}
Run Code Online (Sandbox Code Playgroud)
Auth()->check()即使标头中包含Ive承载令牌,为什么总是返回false?如果标头具有令牌,则应返回true
laravel ×10
laravel-passport ×10
laravel-5 ×4
laravel-5.5 ×2
oauth ×2
oauth-2.0 ×2
apache ×1
api ×1
composer-php ×1
php ×1
vue.js ×1