所以,我有一个提供用户登录的API,如果用户成功登录,登录API将返回一个Json Web Token。
我将在前端使用登录API,一切顺利,我得到了Json Web Token。 但是,我也想使用laravel auth中间件,因为只有真实用户(带令牌的用户)才能移动到另一个页面。 (是的,我使用路线组)。
这是我的路线:
// Login
Route::get('/tera/admin/login', 'Backend\Login\LoginController@index');
Route::group(['middleware' => 'auth'], function () {
// Logout
Route::get('/tera/admin/dologout', 'Backend\Logout\LogoutController@index');
// Dashboard
Route::get('/tera/dashboard', 'Backend\Dashboard\DashboardController@index');
// Inventory
Route::get('/inventory', 'Backend\Inventory\InventoryController@index');
});
通过这种方法,中间件总是将我重定向到内置登录页面的laravel。
解决此案的最佳做法是什么?
谢谢。
答案 0 :(得分:0)
您需要更改Authentication Routes
文件中auth()
方法中的Illuminate\Routing\Router.php
。在Laravel 5.3
中,auth()
方法定义了以下路由:
public function auth()
{
// Authentication Routes...
$this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
$this->post('login', 'Auth\LoginController@login');
$this->post('logout', 'Auth\LoginController@logout');
// Registration Routes...
$this->get('register', 'Auth\RegisterController@showRegistrationForm');
$this->post('register', 'Auth\RegisterController@register');
// Password Reset Routes...
$this->get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm');
$this->post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail');
$this->get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm');
$this->post('password/reset', 'Auth\ResetPasswordController@reset');
}
因此,您可以在此功能或routes
文件中更改它们,您可以使用auth
前缀覆盖它们:
Route::group(['prefix' => 'auth', 'middleware' => 'auth'], function() {
Route::get('login', 'Backend\Login\LoginController@index');
//Define rest of your routes here...
});
或者,您可以导航到app\Http\Controllers\Auth
目录,在该目录中您将看到处理身份验证的不同控制器。您将在此目录中看到LoginController.php
和RegisterController.php
。这两个控制器都包含属性$redirectTo
,用于定义用户登录后重定向的位置。将此属性更改为所需的路由,您应该重定向到新路由。