在 laravel 5.4 中添加管理员角色

Add Admin role in laravel 5.4

我有一个数据库,其中:管理员有 True isAdmin 属性,但其他用户有 false isAdmin 属性.

我想检查登录的用户是 Admin 还是 not,方法是将他们重定向到我的应用程序中的不同页面。我在 Controller 中的代码是:

public function store(User $user)
{
    if (auth()->attempt(request(['email', 'password']))) {
        if ($user->isAdmin == 1) {
            return redirect('/ShowUser');
        }
        {
            return redirect('/lo');
        }

    }
    return back()->withErrors(
        [
            'message' => 'Error'
        ]
    );

}

但是这段代码不起作用;它一直将用户发送到 '/lo'。我该如何解决?

您缺少一个 else 关键字。

就在这里:

if ($user->isAdmin == 1) {
    return redirect('/ShowUser');
}
{ // <-- right here
    return redirect('/lo');
}

添加 else 关键字。

if ($user->isAdmin == 1) {
    return redirect('/ShowUser');
}
else { // <-- right here
    return redirect('/lo');
}

无论如何,即使在上面的编辑之后,您的代码仍然 运行 没问题。但我有问题要问你:

  • 是否假定 user 已经在数据库中?

  • 数据库中isAdmin的默认值是多少?

  • 您是否将 isAdmin 属性作为表单或其他内容的输入传递?

  • 为什么它是一个 store 请求,而你只是想 log 一个用户 in?

有点混乱。我可以从您的代码中看出您正在尝试让用户登录,但是您是在 store 方法中进行的(没有错,只是约定),store 方法通常是用于存储数据(多么巧合!)