【发布时间】:2016-07-02 14:00:56
【问题描述】:
需要一些 laravel 大师的帮助。 我想做管理员帐户登录和仪表板。
开箱即用的 laravel 提供表 users 的身份验证。我添加了表格roles 和一列users(role_id),所以我可以区分用户。
许多小时的搜索并没有帮助,因为在大多数情况下,使用两个表为不同的用户复制本机身份验证是一种愚蠢的方式。
内核.php
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
'api' => [
'throttle:60,1',
],
'admin' => [
'web',
'auth',
],
];
routes.php
Route::group(['middleware' => 'admin'], function () {
Route::get('admin', 'LoginController@showLoginForm');
Route::post('admin', 'LoginController@authenticate');
Route::get('dashboard', function () {
return view('admin.dashboard');
});
});
LoginController.php
public function showLoginForm()
{
return view('admin.login');
}
public function authenticate(Request $request)
{
$credential = [
'email' => $request['email'],
'password' => $request['password']
];
if (Auth::attempt($credential) && $this->authAdmin($credential['email']))
{
//SOMETHING I DONT KNOW YET
//BUT THEN
return redirect()->route('dashboard');
}
}
protected function authAdmin($email = null)
{
$user = User::where('email', $email)->first();
if ($user->role_id == '2')
{
return true;
}
return false;
}
当我去/dashboard 时,我看到了基本的登录表单,当我输入凭据时,我被登录,但会话与简单用户相同。我不确定我的 LoginController 方法。问题是:如何区分会话以创建管理员帐户?关于上述代码的一些建议。
【问题讨论】:
标签: php laravel-5.2