【发布时间】: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 或站点主页。
标签: laravel authentication redirect