php - laravel 5 中的两种登录表单

标签 php laravel authentication laravel-5

我一直想知道如何在 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 函数,例如 getLogingetRegister 以及 $loginPath< 等变量, $redirectTo 但是当调用 publicPostLogin(checkout routes) 时以 Public 的登录形式作为操作 {{ route('publicPostLogin') } 它只是行不通...

最佳答案

你听说过Multiauth in laravel吗? .在这个库中,有两种或多种类型的用户可以在一个 laravel 应用程序中登录。 在我们的例子中,有两种类型的用户 AdminPublic 这意味着用户权限。你通过插入用户类型来识别用户,这完全是错误的,亲爱的。

你必须使用这个库。只需按照链接步骤安装库。并分配两个不同的表,就像我们在 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/

相关文章:

php - 多种帖子类型的 WordPress 条件内容

php - 扩展已实例化但没有 'new' 的类

laravel - 在你的集群、Laravel、docker 中找不到事件节点

java - Spring Boot 2.2.6 - 安全 |更新用户信息后如何更新Principal

docker - 在 Web App 中使用 OpenLDAP 进行身份验证

php - 未捕获的异常 'PDOException' 消息为“SQLSTATE[42000] : Syntax error or access violation: 1064

javascript - 表单提交后将获取变量附加到 url,无需新的隐藏输入

php - Laravel 5.8.* Eloquent 查询(使用 LeftJoin)返回不正确的关系结果

validation - Laravel - 在回调后在验证器中使用变量

python - Flask - 基本身份验证的装饰器