首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Laravel在所有api路由中使用web身份验证重定向到主页

Laravel在所有api路由中使用web身份验证重定向到主页
EN

Stack Overflow用户
提问于 2018-09-04 12:57:26
回答 2查看 12K关注 0票数 3

我想对所有api路由使用web身份验证。我创建了中间件,它看起来是这样的

代码语言:javascript
运行
AI代码解释
复制
Route::group(['middleware' => ['auth:web'], 'prefix' => 'v1',], function ($router) {
   Route::apiResource('subscriptions', 'Api\SubscriptionController');
   Route::post('subscriptions/{id}/resend', 'Api\SubscriptionController@resend')->name('resend');
   Route::post('subscriptions/{id}/grace', 'Api\SubscriptionController@addGrace')->name('grace');
   Route::apiResource('accounts', 'Api\SocialMediaAccountController');
   Route::post('accounts/{id}/reset', 'Api\SocialMediaAccountController@reset');
Route::apiResource('customers', 'Api\CustomerController');
});

当我已经登录并尝试向api路由发出请求时,它会将我重定向到主页。我该如何解决这个问题呢?

下面是config/auth.php

代码语言:javascript
运行
AI代码解释
复制
 'defaults' => [
    'guard' => 'web',
    'passwords' => 'users',
],
'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],
'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],

    // 'users' => [
    //     'driver' => 'database',
    //     'table' => 'users',
    // ],
],

如果我已经登录,我不希望api路由被重定向。我只想做网络授权,并继续相同的请求。

EN

回答 2

Stack Overflow用户

发布于 2019-04-17 19:38:11

只有两个更新来限制你的api路由,要求你的网络身份验证会话发出api请求。

apiweb.的

  1. 更新中间件

代码语言:javascript
运行
AI代码解释
复制
# File: app/Providers/RouteServiceProvider.php

protected function mapApiRoutes()
    {
        Route::prefix('api')
             ->middleware('web') # <-- CHANGE to 'web'
             ->namespace($this->namespace."\\API")
             ->group(base_path('routes/api.php'));

    }

auth:api到(或简称auth) )的

  • 更新中间件

代码语言:javascript
运行
AI代码解释
复制
# routes/api.php
Route::middleware('auth:web')->get('/user', function (Request $request) {
     return $request->user();
});
票数 9
EN

Stack Overflow用户

发布于 2018-09-04 13:28:11

在Laravel中,web路由和api路由有很多不同之处。最大的区别是默认包含的中间件。

您可以在app/Http/kernel.php中看到中间件组之间的区别:

代码语言:javascript
运行
AI代码解释
复制
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',
    ],

API应该是无状态的,因此不会设置cookie和会话。由于api路由不会启动会话,因此您将无法使用经过身份验证的会话。

你可以设置你的路由来使用'web‘组,或者查看关于通过Javascript:https://laravel.com/docs/5.6/passport#consuming-your-api-with-javascript使用你自己的应用程序接口。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52166907

复制
相关文章
Laravel Api表单验证失败被重定向到主页
Laravel Api 开发中,需要实现表单验证,但发现了一个问题,在 Laravel 中,api开发实现表单验证,如果验证失败,会被302重定向到主页。
Petrochor
2022/06/07
6980
Laravel Api表单验证失败被重定向到主页
[PHP] laravel中的api路由前缀
所有的 Laravel 路由都在 routes 目录中定义,这些文件都由框架自动加载。routes/web.php 文件用于定义 web 界面的路由。这里面的路由会被分配给 web 中间件组,它提供了会话状态和 CSRF 保护等功能。 定义在 routes/api.php 中的路由都是无状态的,并且被分配了 api 中间件组。
唯一Chat
2021/06/22
3.3K0
[PHP] laravel中的api路由前缀
Http Server API路由请求到web程序
接上文,容器内web程序一般会绑定到http://0.0.0.0:{某监听端口}或http://+:{某监听端口},以确保使用容器IP可以访问到web应用。
有态度的马甲
2020/04/15
8730
PHP-web框架Laravel-中间件(一)
在Laravel中,中间件是处理HTTP请求的一种机制。它可以用来检查请求是否满足某些条件,比如是否已经进行了身份验证或者是否有足够的权限来访问某个资源。中间件通常用于控制应用程序的访问权限,或者进行一些基于请求的操作,比如日志记录或性能分析。
堕落飞鸟
2023/04/29
3.4K0
全局梳理、分析、总结 laravel 的核心概念
Laravel 是 Taylor Otwell 开发的一款基于 PHP 语言的 Web 开源框架,采用了 MVC 的架构模式。
八点半的Bruce、D
2020/06/09
6.1K0
全局梳理、分析、总结 laravel 的核心概念
在 Laravel 应用中构建 GraphQL API
昨天我们学习了 在 Visual Code 中搭建 Laravel 环境,现在我们来学习 Facebook 的 GraphQL 。
猿哥
2019/07/24
3.4K0
Laravel 路由使用进阶
常言道「物以类聚,人以群分」,同样,在日常开发中,我们通常会将具有某些共同特征的路由进行分组,这些特征包括是否需要认证、是否具有共同的路由前缀或者子域名、以及是否具有相同的控制器命名空间等,显然,对路由按照共同特征进行分组后可以避免重复为某些路由定义相同的路由特征,让代码更加简洁,可读性和可维护性更好。
学院君
2020/10/19
1.5K0
Laravel 路由使用入门
对任何一个 Web 应用框架而言,通过 HTTP 协议处理用户请求并返回响应都是核心必备功能,也就是说,对于我们学习和使用一个 Web 框架,第一件要做的事情就是定义应用路由,否则,将无法与终端用户进行交互。而我们的 Laravel 从入门到精通系列教程之旅也将从路由开始,在这篇真正意义上的开篇教程中,我们将学习如何定义路由,然后将其指向要执行的代码,并处理各种路由需求。
学院君
2020/10/19
2.7K0
Laravel 路由使用入门
Nginx 重定向所有子域名到www
vim .htaccess  或  vim  /var/www/html/.htaccess
阳光岛主
2019/02/18
6.3K0
Nginx 重定向所有子域名到www
JSON Web Token(JWT)教程:一个基于Laravel和AngularJS的例子
这是一篇介绍JSON Web Token(JWT)的文章,虽然可能用到的例子和Laravel和AngularJS有关,但知道了原理便能写出适用于自己的。同时,由于目前个人用的后台一直是java,前端也没用过AngularJS,vue也是最近才开始学,所以Laravel和AngularJS部分 并不十分了解,若有错误,欢迎及时提出。
WindCoder
2018/09/20
30.7K0
JSON Web Token(JWT)教程:一个基于Laravel和AngularJS的例子
PHP-web框架Laravel-路由(二)
在Laravel中,可以使用Route::group方法来将相关的路由分组在一起。例如,下面的代码定义了一个路由组,其中所有路由都需要身份验证:
堕落飞鸟
2023/04/29
8480
PHP-web框架Laravel-路由(一)
路由是Web应用程序中最重要的组件之一。路由是将HTTP请求映射到应用程序中正确控制器的机制。在Laravel中,路由负责确定应用程序如何响应传入的HTTP请求。
堕落飞鸟
2023/04/29
1.3K0
使用 Laravel 5.5+ 更好的来实现 404 响应
Laravel 5.5.10 封装了两个有用的路由器方法,可以帮助我们为用户提供更好的 404 页面。现在,当抛出 404 异常时,Laravel 会显示一个漂亮的 404.blade.php 视图文件,你可以自定义显示给用户 UI,但在该视图中,你无权访问 session,cookie,身份验证(auth)等...
柳公子
2018/09/17
2.3K0
PHP-Laravel入门使用(路由)
什么是路由:将用户的请求按照事先规划的方案提交给指定的控制器或者功能函数来进行处理.【通俗的讲,路由就是访问地址形式】 在博客中,当我们在URL地址中,传递p(平台)、c(控制器)、a(方法)三个参数时,系统会自动跳转到指定模型中指定控制器的指定方法,这些处理过程都是由框架自动完成的。但是,在Laravel框架中,其并没有指定固定参数,其路由必须要手工进行配置。
cwl_java
2020/03/27
2K0
laravel--laravel的重定向类Redirector
laravel的重定向类Redirector 在laravel5中,重定向类可以直接通过redirect()方法直接获取,不需要声明,有几个常用的方法: redirect() -> to( “重定向到指定的地址或者路由器当中”):可以简写为reidrect() redirect() -> action( “重定向到控制器的指定action当中”) redirect() -> route(“重定向到路由的别名当中”) redirect() -> back(“返回上一层请求的地址”) redirect() ->
双面人
2020/02/24
1.3K0
laravel--laravel的重定向类Redirector
ASP.NET Web API路由系统:Web Host下的URL路由
ASP.NET Web API提供了一个独立于执行环境的抽象化的HTTP请求处理管道,而ASP.NET Web API自身的路由系统也不依赖于ASP.NET路由系统,所以它可以采用不同的寄宿方式运行于不同的应用程序中。如果采用Web Host的方式将定义Web API寄宿于一个Web应用之中,其实最终的URL路由还是通过ASP.NET本身的路由系统完成的,那么两个路由系统之间是如何衔接在一起的呢?。 目录 一、HostedHttpRoute 二、HttpWebRoute
蒋金楠
2018/01/15
1.7K0
【译】我是如何学习任意前端框架的
每次你决定学习前端框架时,你定会反复听到这些术语(组件,路由和管理状态/状态管理)。
Jimmy_is_jimmy
2019/07/31
3.6K0
点击加载更多

相似问题

路由将我重定向到主页( laravel )

11

Laravel Vue POST到api使用web路由而不是api路由

112

Laravel重定向到主页

13

Laravel 7单元测试到注册路由重定向到主页

11

在Laravel中通过web路由处理API路由

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文