使用身份验证护照系统覆盖 laravel 中 apis url 的身份验证重定向

     2023-03-14     217

关键词:

【中文标题】使用身份验证护照系统覆盖 laravel 中 apis url 的身份验证重定向【英文标题】:Override auth redirection of apis url in laravel with auth passport system 【发布时间】:2018-11-06 01:17:27 【问题描述】:

我创建了一些运行良好的 api。现在,当有人点击在 Web 浏览器上获取请求的受保护 api url 时,它会重定向到身份验证系统的登录。如何覆盖此功能?

详细信息

我正在使用 laravel 应用程序,在该应用程序中实施了护照和身份验证系统。到目前为止,该项目还没有任何 Web 界面。 这是我的 api.php

Route::group(['middleware' => ['auth:api'],'namespace' => 'Api', 'prefix' => '/v1'], function () 
    Route::get('/user/profile', 'UserController@profile');
    Route::get('/logout', 'Auth\LoginController@logout');
);
Route::group(['middleware' => ['api'], 'namespace' => 'Api', 'prefix' => '/v1'], function () 
    Route::post('/auth/register', 'Auth\RegisterController@create');
    Route::post('/auth/login', 'Auth\LoginController@login');
    Route::post('/auth/password/email', 'Auth\ForgotPasswordController@getResetToken');
    Route::post('/auth/password/reset', 'Auth\ResetPasswordController@reset');
);

这是我的 web.php

Route::get('/', function () 
    return view('welcome');
);

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

当我击球时

site_url/api/v1/user/profile

如果没有在邮递员中传递或使用无效的访问令牌,那么它会返回以下错误(这是可以的)。

"status":"fail","success":0,"error":401,"message":"Invalid Token!"

但是当我在网络浏览器中点击这个网址时,它会将我重定向到登录页面。

【问题讨论】:

那么你想在浏览器中显示什么? 类似 "status":"fail","success":0,"error":401,"message":"Invalid Token!" 或者只是显示未经授权。但不是网页,或者说将来我有主页,然后重定向到网站 url,但 api 不应该受到影响。 不应该,Laravel默认发送到浏览器401请求的登录路由。您只需编辑您的登录页面并编写您想要的任何内容。 因此,正如您在重定向到登录后所说的那样,我可以向他们展示我想要展示的任何内容。比如如果期望 json 则错误,否则 Not Found 或站点主页。 【参考方案1】:

我通过将这些函数添加到/app/Exceptions/Handler.php 解决了这个问题:

public function unauthenticated($request, AuthenticationException $exception)
    if($request->expectsJson())
        return response()->json('Please login',401);
    
    return redirect()->guest('admin/login');


public function unauthorized($request, AuthorizationException $exception)
    if($request->expectsJson())
        return response()->json("You don't have permission to do this",401);
    
    return redirect()->guest('login');

【讨论】:

浏览器从不默认json! 还有一件事我做了这件事,为什么当有人输入无效令牌时我会发送 401 错误。但我的问题是在浏览器中呢? 我从你的问题中了解到,你想要处理身份验证失败到自定义 url 的重定向,如果是这样,那么这些功能就可以工作,只需将 return redirect()->guest('admin/login'); 替换为你的自定义路由 我明白我需要做什么。我以前这样做过,但忘记了。无论如何,你给我的想法。 我只要把函数的定义改成这个就行了。受保护的功能未经身份验证($request,AuthenticationException $exception)返回$request->expectsJson()? response()->json(['status' => "fail","success" => 0, "error" => 401, 'message' => trans('response.invalid_token')], 401) :abort (404);

laravel 护照未经身份验证返回

】laravel护照未经身份验证返回【英文标题】:laravelpassportreturnsunauthenticated【发布时间】:2017-04-2419:21:32【问题描述】:我正在创建一个使用Passport来管理身份验证的api。我已经用thedocs设置了Passport。问题我无法登录。我不断收... 查看详情

护照身份验证在 laravel 5.3 中不起作用

】护照身份验证在laravel5.3中不起作用【英文标题】:Passportauthenticationisnotworkinginlaravel5.3【发布时间】:2017-03-0605:41:46【问题描述】:我已经按照此处的文档使用护照设置了Laravel:https://laravel.com/docs/5.3/passport.我在API路由中编写... 查看详情

使用外部 Laravel 护照流明 api 进行 Laravel 客户端身份验证

】使用外部Laravel护照流明api进行Laravel客户端身份验证【英文标题】:LaravelclientauthentificationwithexternalLaravelpassportlumenapi【发布时间】:2020-03-2509:38:51【问题描述】:我一直在网上寻找,但我找不到任何方法。让我解释一下,我有... 查看详情

Laravel 护照刷新令牌

】Laravel护照刷新令牌【英文标题】:Laravelpassportrefreshtoken【发布时间】:2019-05-1510:18:56【问题描述】:我正在使用Laravel5.5版,使用Passport进行身份验证。我已成功创建令牌并可以使用auth:api中间件访问它。但每当用户登录系统时... 查看详情

Laravel 通过生成的令牌进行身份验证,无需护照和 jwt

】Laravel通过生成的令牌进行身份验证,无需护照和jwt【英文标题】:Laravelauthbygeneratedtokenwithoutpassportandjwt【发布时间】:2018-05-2810:12:09【问题描述】:我正在尝试通过在laravel5.5中使用md5加密方法从登录用户的用户名中检查生成... 查看详情

错误状态 401 错误未经身份验证的 laravel 护照

】错误状态401错误未经身份验证的laravel护照【英文标题】:errorstatus401errorunauthenticatedlaravelpassport【发布时间】:2019-03-0807:26:54【问题描述】:这是我第一次使用laravel护照这是我的config/auth.php\'guards\'=>[\'web\'=>[\'driver\'=>\'se... 查看详情

Laravel 5.6 护照 API 身份验证在获取请求中不起作用

】Laravel5.6护照API身份验证在获取请求中不起作用【英文标题】:Laravel5.6passportapiauthenticationnotworkingingetrequest【发布时间】:2018-10-0309:12:00【问题描述】:我正在制作单页应用程序,在处理get请求时,我已经通过了X-CSRF-TOKEN和X-Req... 查看详情

如何在 laravel 护照中实现多身份验证

】如何在laravel护照中实现多身份验证【英文标题】:howtoimplementmultiauthinlaravelpassport【发布时间】:2018-09-0120:51:57【问题描述】:我有两个用户admin/user我想验证这两个用户的api,它适用于一个用户,但不适用于管理员看看我尝试... 查看详情

Laravel 5.6 护照未经身份验证

】Laravel5.6护照未经身份验证【英文标题】:Laravel5.6PassportUnauthenticated【发布时间】:2019-02-2823:32:57【问题描述】:我关注了Laravel官方文档以及以下文章https://medium.com/techcompose/create-rest-api-in-laravel-with-authentication-using-passport-133a167... 查看详情

如何在 laravel 中进行前端 api 身份验证

】如何在laravel中进行前端api身份验证【英文标题】:howtomakefrontendapiauthenticationinlaravel【发布时间】:2019-02-0710:17:25【问题描述】:我在Laravel中使用护照包创建了一个API身份验证系统。当用户每次登录时创建个人访问令牌以及注... 查看详情

如何在节点/套接字应用程序中验证 laravel 护照 API 令牌?

】如何在节点/套接字应用程序中验证laravel护照API令牌?【英文标题】:Howtoverifylaravelpassportapitokeninnode/socketapplication?【发布时间】:2018-10-2602:36:09【问题描述】:我的问题是关于laravel应用程序中的OAuth护照令牌,它也使用套接... 查看详情

Laravel 护照从数据库中获取令牌

】Laravel护照从数据库中获取令牌【英文标题】:Laravelpassportgettokenfromdatabase【发布时间】:2019-05-1516:56:08【问题描述】:我正在使用Laravel5.5版并使用Passport进行身份验证。我使用以下方法创建了令牌:$token=$user->createToken(\'strin... 查看详情

Laravel 护照授权令牌在生成新令牌时过期

】Laravel护照授权令牌在生成新令牌时过期【英文标题】:LaravelpassportAuthorizationtokenexpireongeneratingnewtoken【发布时间】:2018-04-1108:21:40【问题描述】:我正在使用laravel5.5和API路由的护照身份验证。我正在使用不记名令牌。问题是... 查看详情

Laravel 5.3 Passport API 在 Postman 中使用个人访问令牌未经身份验证

】Laravel5.3PassportAPI在Postman中使用个人访问令牌未经身份验证【英文标题】:Laravel5.3PassportAPIunauthenticatedinPostmanusingpersonalaccesstokens【发布时间】:2017-02-1112:48:03【问题描述】:我已经按照此处的文档使用护照设置了Laravel:https://l... 查看详情

在 mongoose 中使用 Promise 进行护照身份验证

】在mongoose中使用Promise进行护照身份验证【英文标题】:Usingpromisesinmongooseforpassportauthentication【发布时间】:2017-01-0213:40:55【问题描述】:varLocalStrategy=require(\'passport-local\').Strategy;varUser=require(\'../models/user\');module.exports= 查看详情

laravel 6护照中未经授权的401错误

】laravel6护照中未经授权的401错误【英文标题】:Unauthorized401errorinlaravel6passport【发布时间】:2021-11-3013:58:54【问题描述】:我正在尝试使用laravel护照对用户进行身份验证。我遵循laravel护照文件中的每一步。但是当我访问受“aut... 查看详情

Laravel 护照 VS JWT

】Laravel护照VSJWT【英文标题】:LaravelPassportVSJWT【发布时间】:2018-01-1321:50:29【问题描述】:我对认识到LaravelPassport和tymondesigns/jwt-auth包之间的差异感到有点困惑。它们实际上是否通过令牌服务于API身份验证的相同目的?只要Lara... 查看详情

如何在 laravel 中使用社交名流和护照创建 REST API

】如何在laravel中使用社交名流和护照创建RESTAPI【英文标题】:HowtocreateRESTAPIwithsocialiteandpassportinlaravel【发布时间】:2018-05-2402:15:01【问题描述】:我想创建RESTAPI,它将使用社交(谷歌)登录系统来验证用户进入系统。我正在使... 查看详情