我一直想知道如何在 laravel 5 中制作两个登录表单......这是因为我有一个多站点项目,我有管理站点和公共(public)站点在一个项目中。
我已经对路由进行了分组,这样管理路由会响应一个域,而公共(public)路由会响应另一个域,如下所示:
Route::group(array( 'domain' => 'restaurant.com', 'namespace' => 'Public' ), function () {
//some routes
});
Route::group(array( 'domain' => 'restaurant.net', 'namespace' => 'Admin' ), function () {
//some routes
});
我还在像这样的每组路由中创建了用于身份验证的自定义路由(这些路由用于公共(public)):
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
]);
Route::get( '/register' , [
'as' => 'publicRegister' ,
'uses' => 'Auth\AuthController@getRegister'
] );
Route::post( '/registrar' , [
'as' => 'publicPostRegister' ,
'uses' => 'Auth\AuthController@postRegister'
] );
Route::get( '/login' , [
'as' => 'publicLogin' ,
'uses' => 'Auth\AuthController@getLogin'
] );
Route::post( '/login' , [
'as' => 'publicPostLogin' ,
'uses' => 'Auth\AuthController@postLogin'
] );
Route::get( '/logout' , [
'as' => 'publicLogout' ,
'uses' => 'Auth\AuthController@getLogout'
] );
我还在每个父文件夹中创建了带有 Controller ('AuthController
'、'PasswordController
')的 Auth 文件夹,我的 Controller 是这样的:
app
|---Http
|---Controllers
|----------Public
| |---Auth
| | |---AuthController
| | |---PasswordController
| |--- ...
|
|----------Admin
|---Auth
| |---AuthController
| |---PasswordController
|--- ...
因此对于 View ,我有像这样的单独的 Auth View :
resources
|---views
|----------Public
| |---Auth
| | |---login.blade.php
| | |---password.blade.php
| | |---register.blade.php
| | |---reset.blade.php
| |--- ...
|
|----------Admin
|---Auth
| |---login.blade.php
| |---password.blade.php
| |---register.blade.php
| |---reset.blade.php
|--- ...
在我的模型中,用户表有一个类型 列,用于过滤来自公共(public)或管理站点的用户。 这里的主要问题是:如何为我的项目制作两个登录表单? 我希望公共(public)用户无法登录管理站点,反之亦然。
到目前为止,我尝试过覆盖 AuthenticatesAndRegistersUsers
函数,例如 getLogin
、getRegister
以及 $loginPath< 等变量
, $redirectTo
但是当调用 publicPostLogin
(checkout routes) 时以 Public 的登录形式作为操作 {{ route('publicPostLogin') }
它只是行不通...
最佳答案
你听说过Multiauth in laravel吗? .在这个库中,有两种或多种类型的用户可以在一个 laravel 应用程序中登录。 在我们的例子中,有两种类型的用户 Admin 和 Public 这意味着用户权限。你通过插入用户类型来识别用户,这完全是错误的,亲爱的。
你必须使用这个库。只需按照链接步骤安装库。并分配两个不同的表,就像我们在 restaurant.com
中的例子一样,用户类型是 Public,这意味着很简单使用用户表的用户。
另一方面,在我们的案例中,管理员有 restaurant.net
。此登录表单使用 admin 表登录。
忘记密码和重设密码功能在同一个应用程序中单独运行。
'multi' => [ 'admin' => [ 'driver' => 'database', 'table' => 'admin', 'email' => 'client.emails.password' ], 'users' => [ 'driver' => 'database', 'table' => 'users', 'email' => 'client.emails.password', ] ],
关于php - laravel 5 中的两种登录表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31933251/