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

在laravel 8 api中对来自两个以上表的用户进行身份验证

在 Laravel 8 API 中对来自两个以上表的用户进行身份验证,可以通过使用 Laravel 的多认证功能来实现。以下是一个完善且全面的答案:

在 Laravel 8 中,可以使用 Laravel Passport 扩展包来实现对来自两个以上表的用户进行身份验证。Laravel Passport 是一个完整的 OAuth2 服务器实现,它提供了一套用于生成 API 令牌、管理客户端和用户授权的工具。

首先,需要安装 Laravel Passport 扩展包。可以通过 Composer 运行以下命令来安装:

代码语言:txt
复制
composer require laravel/passport

安装完成后,需要运行数据库迁移来创建 Passport 所需的表:

代码语言:txt
复制
php artisan migrate

接下来,需要在 User 模型中使用 HasApiTokens trait,以启用用户模型的 API 认证功能。在 User 模型中添加以下代码:

代码语言:txt
复制
use Laravel\Passport\HasApiTokens;

class User extends Authenticatable
{
    use HasApiTokens;
    
    // ...
}

然后,需要在 AuthServiceProvider 中注册 Passport 的路由和中间件。在 AuthServiceProviderboot 方法中添加以下代码:

代码语言:txt
复制
use Laravel\Passport\Passport;

public function boot()
{
    $this->registerPolicies();

    Passport::routes();
}

接下来,需要运行以下命令来生成加密密钥:

代码语言:txt
复制
php artisan passport:install

运行以上命令后,会生成用于加密访问令牌的公钥和私钥。

现在,可以在 config/auth.php 文件中配置多个用户提供者。在 providers 数组中添加以下代码:

代码语言:txt
复制
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],
    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Models\Admin::class,
    ],
],

以上代码中,usersadmins 是两个用户提供者的名称,App\Models\UserApp\Models\Admin 是对应的用户模型。

接下来,需要在 config/auth.php 文件中配置多个守卫。在 guards 数组中添加以下代码:

代码语言:txt
复制
'guards' => [
    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
    'admin-api' => [
        'driver' => 'passport',
        'provider' => 'admins',
    ],
],

以上代码中,apiadmin-api 是两个守卫的名称,usersadmins 是对应的用户提供者。

现在,可以在 API 路由中使用不同的守卫来进行身份验证。例如,在 routes/api.php 文件中添加以下代码:

代码语言:txt
复制
Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});

Route::middleware('auth:admin-api')->get('/admin', function (Request $request) {
    return $request->user();
});

以上代码中,auth:api 使用 api 守卫进行身份验证,auth:admin-api 使用 admin-api 守卫进行身份验证。

至此,就可以在 Laravel 8 API 中对来自两个以上表的用户进行身份验证了。根据具体的业务需求,可以在不同的表中存储不同类型的用户,并使用不同的守卫进行身份验证。

推荐的腾讯云相关产品:腾讯云服务器(CVM)、腾讯云数据库(TencentDB)、腾讯云对象存储(COS)等。您可以访问腾讯云官网了解更多产品信息和详细介绍。

腾讯云官网链接地址:https://cloud.tencent.com/

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

相关·内容

JSON Web Token(JWT)教程:一个基于Laravel和AngularJS例子

由于HTTP协议是无状态,因此需要有一种存储用户信息机制,以及登录后每个后续请求用户进行身份验证方法。大多数网站使用Cookie来存储用户会话ID(session ID)。...每个后续请求,由于用户数据存储服务器上,服务器需要找到该会话并进行反序列化。 基于服务器认证缺点 难以扩展:服务器需要为用户创建一个会话并将其保存在服务器上某个位置。...---- 使用Laravel 5和AngularJSJSON Web Token示例 (译注:由于Laravel和AngularJS不熟悉,这里英文原文为准,同时若发现这里有错误,欢迎随时提出。...) 本教程,我将演示如何使用两个流行Web技术实现JSON Web Token基本身份验证Laravel 5用于后端代码,AngularJS用于前端单页面应用程序(SPA)示例。...调用进行用户身份验证和样本数据以及用于提供跨域示例数据API服务器。

30.5K10

PHP-web框架Laravel-中间件(一)

Laravel,中间件是处理HTTP请求一种机制。它可以用来检查请求是否满足某些条件,比如是否已经进行身份验证或者是否有足够权限来访问某个资源。...中间件通常用于控制应用程序访问权限,或者进行一些基于请求操作,比如日志记录或性能分析。中间件基本使用在Laravel,中间件可以通过路由或控制器来指定。...这意味着只有经过身份验证用户才能访问该路由。中间件类Laravel中间件实际上是PHP类。创建中间件时,可以选择手动创建类,也可以使用Laravel提供中间件生成器来自动生成。...web中间件在这个示例,我们定义了两个中间件组:web和api。web中间件组包含一组用于Web应用程序中间件,如加密Cookie、启动会话和验证CSRF令牌。...api中间件组包含一组用于API中间件,如速率限制和API身份验证路由中使用中间件。可以路由定义中使用中间件。

3.3K31

Laravel 用户认证

现在很少见了 基于 api 身份验证:常见于前后端分离项目,一套api同时给前端,Android,iOS提供服务;使用token完成身份验证。...也是当下最流行开发模式 在其核心,Laravel 用户认证是由「看守器」和「提供器」。看守器定义如何每个请求用户进行身份验证。...:除了password以外字段都会作为查询条件 比对密码:明文密码即可,因为框架将该值与数据库散列密码进行比较之前会自动加密 以上两个操作都成功才会返回true 源码位置: vendor/laravel...由于 Laravel 已经附带了 AuthServiceProvider,因此我们可以将代码放置该提供程序: <?...如果不使用传统关系数据库来存储用户,则需要使用自己身份验证用户提供程序来扩展 Laravel

2.1K20

JSON Web 令牌(JWT)是如何保护 API

例如,我们不希望一个用户能够更改另一个用户密码。 这就是为什么我们保护某些资源,使用户允许访问之前提供他 ID 和密码——换句话说,我们它们进行身份验证。...保护HTTP API困难在于请求是 无状态 —— API 无法知道是否有两个请求来自同一用户。 那么,为什么不要求用户每次调用 API 时提供其 ID 和密码呢?仅因为那将是可怕用户体验。...这不是一种加密方式,任何人都可以 轻松解码 查看原始数据。 我们可以对这些字符串进行解码,更好地了解JWT结构。 Header 以下是 Token 已解码 Header 部分。...即使 Payload 是 API 上识别用户所需要全部,它也不能提供身份验证方法。如果其中包含所有内容,则有人可以轻松找到你用户 ID 并伪造 Token 。...如果它们匹配,则用户进行身份验证

2K10

详解将数据从Laravel传送到vue四种方式

Laravel 提供了两个不同路由文件:web.php 和 api.php。它们被拉入并通过应用程序 Providers 目录 RouteServiceProvider.php 文件映射。...否则,可以进行一次修改,确保几秒钟内与 Vue 完全兼容。 回到上面的 RouteServiceProvider, 交换出 web 方法 api 中间件。我们为什么要这样做?...运行 php artisan jwt:secret 生成签名应用程序令牌所需要密钥。 完成之后,你需要决定哪些路由将受 JWT 保护并针对 JWT 进行身份验证。... API 登录方法,你将使用相同 auth()- attempt 方法作为默认 Laravel 应用程序,但从它返回除外是你应该传递回 JSON Web Token 令牌。...回到你 Laravel 应用,你可以使用他们令牌来引用特定用户请求。将应该显示给他们数据返回回去。 以上就是本文全部内容,希望大家学习有所帮助。

8K31

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

本文中,我们将探讨如何构建和测试使用Laravel进行身份验证强大API。我们将使用Laravel 5.4,所有的代码都可以GitHub上参考。...来源百度百科 资源(Resources) 资源将是actions目标,我们文章和用户情况下,他们有自己端点: /articles /users 在这个laravel api教程,资源将在我们数据模型具有...当您必须返回分页资源列表时很有用。 400: 错误请求。无法通过验证请求标准选项。 401:未经授权 用户需要进行身份验证。 403:禁止 用户已通过身份验证,但没有执行操作权限。...认证 Laravel中有许多实现API身份验证方法(其中之一是Passport,实现OAuth2好方法),但在本文中,我们将采用一个非常简化方法。...这需要与前端进行协调,以避免用户没有访问任何内容情况下保持记录。

20.2K20

Laravel Sanctum API 授权

Laravel Sanctum 为 SPA(单页应用程序)、移动应用程序和基于令牌、简单 API 提供轻量级身份验证系统。...Sanctum 允许应用程序每个用户为他们帐户生成多个 API 令牌。这些令牌可以被授予指定允许令牌执行哪些操作能力 / 范围。..." php artisan migrate 接下来,如果您想利用 Sanctum SPA 进行身份验证,您应该将 Sanctum 中间件添加到您应用 app/Http/Kernel.php 文件...这一行,Laravel 9默认是注释掉,需要取消注释 API 令牌认证 发布 API Tokens 要开始为用户颁发令牌,你 User 模型应使用 Laravel\Sanctum\HasApiTokens...移动应用身份验证 测试 测试时,Sanctum::actingAs 方法可用于验证用户并指定为其令牌授予哪些能力: use App\Models\User; use Laravel\Sanctum\Sanctum

2.9K30

Love beautiful code? We do too.

Laravel基于MVC架构,可以满足诸如事件处理、用户身份验证等各种需求,同时通过包管理实现模块化和可扩展代码,并且对数据库管理有着健壮支持。...它可以让用户通过浏览器上输入路径方式让应用程序各部分相关联。...Laravel自带对本地用户身份验证,并可以使用“remember” 选项来记住用户。此外你还可以引入一些额外参数,例如是否是活跃用户。...Laravel,可以使用OpenSSL和AES-256-CBC加密算法来满足你所有的加密需求。此外,所有的加密值都通过认证码进行签名以避免加密信息被篡改。...中分页非常简单,因为它能够根据用户浏览器的当前页生成一系列分页链接。

3K20

Laravel Jetstream是什么以及如何入门?

介绍 Laravel Jetstream 与 Laravel 8 一起于2020年9月8日发布。 Laravel Jetstream 是 Laravel应用程序支架。...Laravel Jetstream取代了旧版Laravel可用Laravel认证UI。 本教程,我将向你快速介绍什么是Laravel Jetstream以及如何开始使用它。...它包括以下组件: 登录与注册功能 邮箱验证 双重认证 会话管理 通过Laravel Sanctum提供API支持 Laravel Jetstream取代了旧版Laravel可用Laravel认证UI...但是,更令人印象深刻是,Jetstream还提供带有QR码双重身份验证用户可以直接启用和禁用。 另一个出色安全功能是用户也可以注销其他浏览器会话。...我还建议在这里阅读有关Laravel 8新功能文章!

6.3K20

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

Laravel 是一个流行 PHP 框架,都说其许多方面都优雅之处,比如:优雅认证系统:Laravel 自带认证系统提供了一种优雅方式来处理用户登录和注册,开发人员只需几行代码即可实现这些功能...下面是一些大致步骤:首先, Laravel 项目中安装 Laravel Passport 包,并按照官方文档进行配置。接着,需要创建一个专门用于授权 Passport 客户端。...在这里,我们将使用“password”类型,因为我们希望用户能够使用用户名和密码进行身份验证。...假设我们有一个名为“App2”应用程序,现在我们需要修改该应用程序身份验证逻辑,以使用我们刚才创建 Passport 客户端来进行身份验证。...当用户一个应用程序中进行身份验证时,该系统将颁发一个访问令牌,并将其传递到其他应用程序,使用户能够在这些应用程序中保持登录状态。

98450

Laravel7使用Auth进行用户认证

Laravel7 laravel/ui 包提供了一种快速方法,可以使用一些简单命令来支持你进行身份验证所需所有路由和视图: 安装依赖包laravel/ui 直接使用命令进行安装 composer...require laravel/ui 创建auth脚手架 直接使用命令进行创建 #注意这里vue为可选项,可以换成bootstrap react vue php artisan ui vue --...我们会发现直接登录完页面进入了,然后退出登录。 然后再试一下登录,使用刚才邮箱和密码。 至此用户认证就实现了。有几个点再说一下。 模版文件resources文件夹内,可以随意修改。...你可以使用 app\Providers\RouteServiceProvider 定义 HOME 常量来自定义身份验证重定向路径,自行修改即可。...public const HOME = '/home'; 自定义认证成功后操作 如果你需要对用户身份验证后返回响应进行更强大自定义,Laravel 提供了一个空 authenticated(Request

5.8K10

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

本文内容主要围绕在 Laravel 5.5 中使用 API 开发重要步骤,着重介绍如何利用 Laravel API 资源(Resource)和控制器(Controller)进行多因素身份验证(MFA...· php artisan make:resource PostsResource: 创建一个名为 "PostsResource" 资源类,用于posts进行处理。...也就是 app 目录下 User.php 文件,你会定义用户和posts之间关联关系,比如一多关系(一个用户有多个posts)或其他关系。· 避免批量赋值app/Post.php<?...能够资源类中进行关系转换,但是有条件:如果数据是可用(已经预加载),就可以进行转换;如果数据尚未加载,可以选择忽略这个转换。...通过控制器简单地移除 with('posts'),API 将不再在响应包含每个用户posts数据。 2.

11310

Laravel CSRF 保护

跨站点请求伪造(英语:Cross-site request forgery)是一种恶意利用,利用这种手段,代表经过身份验证用户执行未经授权命令。...通过Laravel 用户认证我们知道了web 浏览器认证和API 认证,基于此我们今天总结下 CSRF 保护 漏洞解释 如果您不熟悉跨站点请求伪造,我们讨论一个利用此漏洞示例。...假设您应用程序有一个 /user/email 路由,它接受 POST 请求来更改经过身份验证用户电子邮件地址。...,他们电子邮件地址就会在您应用程序更改。...以上摘自 Laravel 文档;下面自我理解一下: 表单是可以跨域用户打开了浏览器,有两个标签页,一个是您网站(your-application.com),一个是恶意网站(怎么打开

1.4K20

使用 Laravel 5.5+ 更好来实现 404 响应

Laravel 5.5.10 封装了两个有用路由器方法,可以帮助我们为用户提供更好 404 页面。...现在,当抛出 404 异常时,Laravel 会显示一个漂亮 404.blade.php 视图文件,你可以自定义显示给用户 UI,但在该视图中,你无权访问 session,cookie,身份验证(auth... laravel 5.5.10 ,我们有一个新 Route::fallback() 方法,用于定义当没有其他路由与请求匹配时 Laravel 回退路由。... @stop 当 Laravel 渲染这个回退(fallback)路由时,会运行所有的中间件,因此当你 web.php 路由文件定义了回退路由时,所有处在 web 中间件组中间件都会被执行...; }); 由于 api 中间件组带有 /api 前缀,所有带有 /api 前缀未定义路由,都会进入到 api.php 路由文件回退路由,而不是 web.php 路由文件中所定义那个。

2.2K20

laravel 自定义中间件实现身份验证

通过Laravel 用户认证我们知道了基于 api 身份验证,实现方式有Laravel Sanctum API 授权 、 Laravel 使用 Json Web Token(JWT) 等,今天介绍一下自定义中间件实现身份验证...比如:TrimStrings中间件会自动去掉请求参数左右两边空格;ConvertEmptyStringsToNull中间件会自动把请求参数空字符串转为 null。...最终我选择不启用该中间件 中间件、中间件组 一、上面提到Laravel Sanctum API 授权使用是auth中间件 protected $routeMiddleware = [...'api' => [ \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,...'auth.api' => \App\Http\Middleware\ApiAuth::class, ]; 路由中使用 #用户端 Route::group(['prefix' => 'user

1.6K10
领券