laravel5.1 手动验证用户身份


laravel5.1 Manually Authenticating Users

在我的应用程序中,我使用默认身份验证将我的用户登录到他们的仪表板。现在我想为支持者创建一个后端,为管理员创建一个后端。我目前使用此代码以管理员身份登录:

<?php
namespace App'Http'Controllers'Admin;
use Illuminate'Http'Request;
use App'Http'Requests;
use App'Http'Controllers'Controller;
use App;
use Artisan;
use Validator;
use Auth;
class AdminLoginController extends Controller
{
    public function index()
    {
        return view('admin.login');
    }
    public function authenticate(Request $request)
    {
         if (Auth::attempt(['username' => $request->username, 'password' => $request->password, 'id' => 1])) 
        {
            // Authentication passed...
            dd("correct");
        }
        else
        {
            dd("login data incorrect!");
        }
    }
}

登录后如何使用众所周知的重定向。在我的身份验证控制器中,我为用户使用此代码:

/**
 * Where to redirect users after login / registration.
 *
 * @var string
 */
protected $redirectTo = '/dashboard';
protected $redirectAfterLogout = 'auth/login';
protected $redirectPath = '/dashboard';

1.) 如何在上面的代码中使用它?我想使用此 laravel 功能将登录到应用程序的管理员(如用户)重定向到指定的 URL。

2.) 在 if 语句中检查更多"id"的最佳方法是什么?因为会有多个管理员。

首先,

您要检查用户名,密码以及ID。因此,只有 Id = 1 的用户才会由您的函数进行身份验证。您无需在那里进行身份检查。

现在对于重定向,您可以创建一个函数,该函数根据用户类型返回 url。这是一个非常基本的例子'

public function getRedirectUrl(){
    if(auth()->user()->isAdmin()){
        return url('/admin-dashboard');
    }
   elseif(auth()->user()->isUser()){
     return url('/user-dashboard')
     }
}

确保在你的用户模型中定义了isAdmin()和isUser()函数,如

public function isAdmin(){
  return $this->user_type == UserType::ADMIN;
}

因此,在您的身份验证功能中,只需执行return redirect($this->getRedirectUrl())