在Laravel 5.2中为用户和管理员创建登录的最佳方法是什么?

时间:2016-05-12 17:59:34

标签: php laravel laravel-5.2

我希望创建转移到管理区域,其中users表中的type列的值为A.否则,它们会转移到用户区域。

然而,我似乎找到了从守卫到重定向和中间件组的各种方式。您如何推荐和实施此类登录?

3 个答案:

答案 0 :(得分:1)

取决于表的设置方式。最简单和最常见的方法是在users表上有一个列,表示用户是否为admin(例如is_admin)。

如果您希望它们在登录后分开,最佳解决方案是覆盖原始AuthController的登录功能(只需创建一个新的postLogin)并根据字段is_admin重定向。

这样的东西
public function postLogin(Request $request)
{
    // setup rules for validation of user input
    $rules = [
        'username' => 'required',
        'password' => 'required'
    ];

    // run validation, if this does not pass Laravel will redirect back with input and errors
    $this->validate($request, $rules);

    // attempt to authenticate the user
    if(Auth::attempt(['username' => $request->input('username'), 'password' => $request->input('password')]))
    {
        here you should check the user which just happens to be stored in Auth::user()
    }
    else
    {
        // the attempt was not correct, lets redirect back with input and an error
        return Redirect::back()->withInput()->withErrors(['The user information is invalid']);
    }
}

您需要创建一些中间件,以确保访问该路由的用户也是管理员。

答案 1 :(得分:0)

在成员或用户表中创建一个列命名位置,并存储一个值admin,用户名和密码用于登录为admin。

提交表单然后检查位置是否等于admin然后重定向管理页面,否则重定向用户页面,

答案 2 :(得分:0)

最简单的方法是使用sentinel设置授权。它为您提供角色的用户创建,您也可以添加角色。 您所要做的就是将包添加到您的composer文件,composer更新并与artisan一起发布供应商。 以下是如何实现这一目标,sentinel setup.它为您提供了权限,但在您的情况下,您将对中间件进行分组。 你所要做的就是

Route::group(['middleware' => 'App\Http\Middleware\SentinelAdmin'], function()
{
//Your admin routes
});

定义您只希望管理员在该功能内访问的路由。同样,您可以在用户中间件中定义用户路由。

 Route::group(['middleware' => 'App\Http\Middleware\SentinelUser'], function()
{
// Your user routes
}

这些是从包中提供的。您可以分别创建更多角色和自己的中间件。 一旦在服务提供商中定义了中间件,您就会对其进行简写,但我使用了完整的路径来更好地理解。