首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Laravel passport用于不同的表,而不是'users‘

Laravel Passport 是一个 OAuth2 服务器实现,它主要用于 API 认证。默认情况下,Passport 会使用 Laravel 的 users 表来存储客户端和用户信息。然而,有时候你可能需要将 Passport 与不同的表一起使用。

基础概念

OAuth2 是一种授权框架,允许第三方应用访问用户的资源,而不需要获取用户的密码。Passport 提供了实现 OAuth2 服务器所需的所有组件。

相关优势

  1. 安全性:OAuth2 提供了一种安全的授权方式,避免了直接传递用户密码。
  2. 灵活性:可以轻松地与不同的应用和服务集成。
  3. 标准化:OAuth2 是一个广泛接受的开放标准。

类型

Passport 支持多种授权类型,包括:

  • 授权码模式(Authorization Code Grant)
  • 隐式模式(Implicit Grant)
  • 密码模式(Resource Owner Password Credentials Grant)
  • 客户端凭证模式(Client Credentials Grant)

应用场景

Passport 适用于需要保护 API 端点的应用,例如:

  • Web 应用程序
  • 移动应用程序
  • 单页应用程序(SPA)

遇到的问题及解决方法

如果你需要将 Passport 与不同的表一起使用,可以通过自定义 Passport 的配置来实现。

自定义表

  1. 创建自定义用户模型
代码语言:txt
复制
namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;

class CustomUser extends Authenticatable
{
    // 自定义字段和方法
}
  1. 更新 AuthServiceProvider
代码语言:txt
复制
namespace App\Providers;

use Illuminate\Support\Facades\Auth;
use Laravel\Passport\Passport;
use App\Models\CustomUser;

class AuthServiceProvider extends ServiceProvider
{
    public function boot()
    {
        $this->registerPolicies();

        Passport::routes();
        Passport::useCustomTokenStore(new CustomTokenStore);

        Auth::provider('custom', function ($app, array $config) {
            return new CustomUserProvider($app['hash'], $config['model']);
        });
    }
}
  1. 创建自定义 Token 存储
代码语言:txt
复制
namespace App\Providers;

use Laravel\Passport\TokenRepository;
use Laravel\Passport\Token;
use Illuminate\Support\Facades\DB;

class CustomTokenStore implements TokenRepository
{
    public function create(array $token)
    {
        return DB::table('custom_tokens')->insertGetId($token);
    }

    public function update(Token $token)
    {
        DB::table('custom_tokens')
            ->where('id', $token->id)
            ->update($token->toArray());
    }

    public function delete(Token $token)
    {
        DB::table('custom_tokens')->where('id', $token->id)->delete();
    }

    public function find($id)
    {
        return DB::table('custom_tokens')->find($id);
    }

    public function forClient($clientId)
    {
        return DB::table('custom_tokens')
            ->where('client_id', $clientId)
            ->get();
    }

    public function forUser($userId)
    {
        return DB::table('custom_tokens')
            ->where('user_id', $userId)
            ->get();
    }
}
  1. 创建自定义用户提供者
代码语言:txt
复制
namespace App\Providers;

use Illuminate\Auth\EloquentUserProvider;
use Illuminate\Contracts\Auth\Authenticatable as UserContract;

class CustomUserProvider extends EloquentUserProvider
{
    public function retrieveById($identifier)
    {
        return $this->createModel()->find($identifier);
    }

    public function retrieveByToken($identifier, $token)
    {
        return $this->createModel()->where('id', $identifier)->where('api_token', $token)->first();
    }

    public function updateRememberToken(UserContract $user, $token)
    {
        $user->setRememberToken($token);
        $user->save();
    }
}
  1. 更新 config/auth.php
代码语言:txt
复制
'providers' => [
    'users' => [
        'driver' => 'custom',
        'model' => App\Models\CustomUser::class,
    ],
],

参考链接

通过以上步骤,你可以将 Laravel Passport 与不同的表一起使用,从而满足特定的业务需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 下一个大的 Wi-Fi 标准是用于传感,而不是通信

    IEEE 将推出新的 802.11 标准,为大家喜爱的无线通信标准带来新的功能。但即将推出的 802.11bf 标准不是用于通信,而是用于传感。...最新版本的 Wi-Fi 层通过使用数学计算他们如何干扰在物理空间中反弹的信号来感知人或物体的能力,因此我们已建立的 Wi-Fi 设备将成为网络的一部分,用于找出特定空间中包含的人和事物的位置。...得益于一家名为 Cognitive Systems 的公司,该技术的原型版本目前正用于检测某些智能家居应用中的运动。但标准化将使 Wi-Fi 感应无处不在。...IEEE 计划从 Cognitive 构建的专有系统(已授权给高通和 Plume)中获取 Wi-Fi 传感概念,并创建一个标准接口,用于芯片如何计算确定物体在空间中的位置的干扰。...(Wi-Fi 传感目前使用 Wi-Fi 设备上的软件——一个房间中的三个设备提供良好的覆盖——来绘制房间中物体和人的图片。)

    1.5K00

    Laravel 的优雅之处 之,Passport搭建SSO系统

    优雅的路由定义:Laravel 提供了一种优雅而直观的方式来定义应用程序的路由,可以通过闭包或控制器方法来处理 HTTP 请求。...今天我们就以 Laravel Passport 为例,搭建一个SSO系统。...对于 Laravel 的认证系统,可以通过使用 Laravel Passport 这个包来构建一个基于 OAuth2 的单点登录(SSO)系统。...下面是一些大致的步骤:首先,在 Laravel 项目中安装 Laravel Passport 包,并按照官方文档进行配置。接着,需要创建一个专门用于授权的 Passport 客户端。...可以使用 Laravel 自带的 AuthController 类来处理此请求。在此控制器中,我们需要使用 Passport 提供的 issueToken 方法来颁发访问令牌。

    1.2K50

    Laravel API教程:如何构建和测试RESTful API

    有些端点是非常明确,而且,作为一个结果,你的API将更加易于使用和维护,而不是这样的端点例如GET /get_article?id_article=12和POST /delete_article?...我们不会使用password_resets表,但为我们准备好的users表将是有帮助的。...认证 在Laravel中有许多实现API身份验证的方法(其中之一是Passport,实现OAuth2的好方法),但在本文中,我们将采用一个非常简化的方法。...开始使用前,我们需要在users表中添加一个api_token字段: $ php artisan make:migration --table=users adds_api_token_to_users_table...我建议您在开始获取迁移错误时,在测试中离开SQLite,或者您希望使用更强大的测试,而不是执行运行。 我们还将在每次测试之前运行migrations 。

    20.4K20

    解决 laravel passport Key file %s permissions are not correct, should be 600 or 660 instead of %s

    laravel passport 问题描述 这是我之前遇到的问题,忘记记录了。...环境: laravel "5.3" dingo Api passport 我在做我自己的项目的时候,决定全部使用API风格,token鉴权的机制,这样就可以只写一份后端,而不考虑页面。...问题就出现在这,我是使用windows进行开发,当我安装完laravel/passport的时候,访问报错'Key file "%s" permissions are not correct, should...be 600 or 660 instead of 666',这显然是一个权限的问题,但是比较尴尬的是我在用windows,应该没涉及到什么权限的问题才对啊,毕竟windows的····(不能说坏话,万一我有一天去微软上班了呢...接着,我给laravel/passport提了一个issues, https://github.com/laravel/passport/issues/712 ,但是没人回复。

    18020

    Laravel API 开发推荐阅读清单

    社区优秀文章 Laravel 5.5+passport 放弃 dingo 开发 API 实战,让 API 开发更省心 - 自造车轮。...讲讲我最近用 Laravel 做的一个 App 后端项目 Laravel Passport API 认证使用小结 关于 RESTful API 设计的总结 Laravel 5.5 使用 Passport...实现 Auth 认证 使用 Laravel 的 API 资源功能来构建你的 API 单个 Laravel 项目同时配置不同域名 api.domain(用户端接口) 和 admin.domain(管理员端...RESTful API 的一些心得 对 REST 的理解 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 在 Laravel 中动态隐藏 API 字段 Nginx 下部署...Charles Proxy Mac 下抓包必备 Postman 功能齐全的 API 请求工具 Laravel API 课程 社区有一门实战课程 《Laravel 教程实战高级 - 构架 API 服务器

    4.3K70

    【Laravel系列7.4】安全相关

    默认情况下,我们安装 Laravel 框架后,会自带一个默认的 User Model ,这个 Model 就是这个默认用户表的模型类。...其实上面的 npm run dev 操作就是编译了 Laravel 框架自带的 Vue 框架,而模板走的正是 Vue ,文件在 resource/js/Pages 中,在这里我们可以找到 Auth/Register.vue...或许还有别的方法,可以走普通的直接输出的页面形式,因为 view/auth 下面也生成了一些文件,一开始我还以为是走的这里的前端文件,但结果并不是。我们也不深究了。 费劲吗?...(网页形式也是同理的) 自已实现的注册、登录 要自己实现登录注册其实非常简单,如果只是网页的登录,同样我们还是使用 Laravel 自带的那个 users 数据表,然后自定义几个路由和控制器。...,方法内部会查询用户并进行比对,它默认走的是 User 这个 Model ,调用的数据表就是 users 表。

    3.6K40

    Laravel实现用户多字段认证的解决方法

    前言 本文主要给大家介绍了关于Laravel用户多字段认证的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。...弊端显而易见,如果另一个不是 email 就抓瞎了……,下面是另一种通用的解决方案: 在 LoginController 中重写 login 方法 public function login(Requests...sendLoginResponse($request); } return $this->sendFailedLoginResponse($request); } 可以看到虽然能解决问题,但是显然有悖于 Laravel...: 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => AppModelsUser::class, ], 'custom'...', ], 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ], 现在哪怕你有在多个字段都妥妥的…

    51720

    laravel 学习之路 数据库操作 Migrations

    Laravel 的 Schema 门面 提供数据库无关的支持,用于在所有 Laravel 支持的数据库系统中创建和操作表 创建迁移 使用 make:migration Artisan命令来创建迁移 php...--table 和 --create 选项也可用于确定表的名称以及是否在迁移中创建新的数据表。...一共有两个方法 up 和 down ,up 方法是用于新增数据库的数据表、字段或者索引的,而 down 方法与 up 方法执行操作相反是用来删除表的。...MySQL 8 是由于 MySQL 8 默认使用了新的密码验证插件:caching_sha2_password,而之前的PHP版本中所带的 mysqlnd 无法支持这种验证。...除了 laravel 自带的 users 表和 password_resets 表,除了我们创建的 test 表,我们还发现了个 migrations 表,我们看下这个表的内容 ?

    2.3K20

    3分钟短文:为了你少跳坑,Laravel写好了用户授权

    而如果要深度定制用户权限的开发者,也非常有必要了解用户和授权相关的内容。 本期为大家说一说用户注册和登陆的功能。...users数据表 用户的数据和信息必然在数据库内,所以laravel自带了User模型,在 app/User.php 文件内, 内部代码声明了必要的部分: namespace App; use Illuminate...来看一下默认的users表的迁移文件 2014_10_12_000000_create_users_table.php 的内容,还是我们之前无数次强调过的,先实现 up 方法用于迁移表格: public...在命令行执行迁移指令: php artisan migrate 执行成功后使用mysql客户端连接数据库,打印users表结构,如下图: 登陆注册 有了users表的数据支持,还有laravel内置的用户逻辑...写在最后 本文介绍了如何使用laravel自带的users表所关联的用户授权功能, 可以说是一个具有用户功能的应用程序的基石,我们后面的文章会着重深入介绍。

    57820

    3分钟短文:为了你少跳坑,Laravel写好了用户授权

    而如果要深度定制用户权限的开发者,也非常有必要了解用户和授权相关的内容。 本期为大家说一说用户注册和登陆的功能。...users数据表 用户的数据和信息必然在数据库内,所以laravel自带了User模型,在 app/User.php 文件内, 内部代码声明了必要的部分: namespace App; use Illuminate...来看一下默认的users表的迁移文件 2014_10_12_000000_create_users_table.php 的内容,还是我们之前无数次强调过的,先实现 up 方法用于迁移表格: public...在命令行执行迁移指令: php artisan migrate 执行成功后使用mysql客户端连接数据库,打印users表结构,如下图: 登陆注册 有了users表的数据支持,还有laravel内置的用户逻辑...写在最后 本文介绍了如何使用laravel自带的users表所关联的用户授权功能, 可以说是一个具有用户功能的应用程序的基石,我们后面的文章会着重深入介绍。

    91800

    laravel5.3的新功能尝鲜

    上一节课 https://my.oschina.net/lilugirl2005/blog/783370 上一节课我们讲了laravel5.3的安装,这节讲laravel5.3的一些基础命令和配置 Listeners...文件夹 进入laravel项目目录输入命令 创建用户注册的事件监听 看看 php artisan make:listener UserSignUpListener --event=UserSignUp...然后检查数据库 发现favorites表自动生成了一条记录 ? 相反的detach可以删除关系 ? favorites数据库为空 ? toggle的使用 ?...Notify:站内信通知 (通过database记录) 站内信通知是将通知消息存储到数据库中的,需要先建立对应的数据表 输入以下命令创建表 php artisan notifications:table...查看命令描述或者解释 php artisan php artisan help hello Passport 使用 OAuth 2.0

    95620

    通过填充器快速填充 Laravel 测试数据

    在 Laravel 框架中,如果想要快速填充测试数据到数据库,可以借助框架提供的填充器功能,通过填充器,我们可以非常方便地为不同数据表快速填充测试数据。...填充器的运行 Laravel 提供了两种方式来运行填充器:一种是独立的填充命令,另一种是在运行迁移命令时通过指定标识选项在创建数据表时填充。...然后运行如下 Artisan 命令即可: php artisan db:seed 这样,就可以在数据表 users 中看到新填充的用户记录了: 当然,我们可以在 UsersTableSeeder 类中定义多条插入语句来一次性插入多条记录...创建模型工厂 模型工厂位于 database/factories 目录下,Laravel 自带了一个用于填充 User 模型的模型工厂 UserFactory.php: <?...比如我们还是通过运行 php artisan db:seed 命令来填充数据到数据库,此时,就可以看到新填充了 5 条记录: 注:本教程都以 Laravel 自带的 users 及对应 User 模型类为例进行演示

    10.1K20

    具有嵌套关系的可重用API资源——Laravel5.5

    这个文件包含了使用 Laravel 的迁移(Migration)功能创建数据库表的代码。· posts工厂database/factories/PostFactory.php的操作,可以使用 Laravel 的 Seeder 来填充数据库表,确保数据库中有一些初始数据可用于开发和测试。 3....这样做有利于避免 N+1 查询问题(在获取关联数据时出现的效率问题),同时可以使用单个资源类处理不同的情况。如果关联数据不可用,资源类会忽略它;反之,如果可用,资源类会将其包含在返回的数据中。...简化和逐步进行本文着重于学习如何使用 Resource::collection 而不是手动实例化类,并将关系数据的提供(或不提供)责任委托给控制器。...毕竟,控制器的工作是理解请求。这暗示着对于数据包含的处理,Laravel 更多地依赖于控制器层面的逻辑,而不是在资源转换层实现。

    15810
    领券