laravel5.1手动验证用户

时间:2016-02-11 19:38:26

标签: php authentication laravel-5.1

在我的应用中,我使用默认身份验证将用户登录到其信息中心。 现在我想为支持者创建一个后端,为管理员创建一个后端。 我现在使用此代码以admin身份登录:

<?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!");

        }
    }

}

如何在登录后立即使用众所周知的重定向。 在我的AuthController中,我使用此代码的用户:

/**
 * 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”的最佳方法是什么?因为会有多个管理员。

1 个答案:

答案 0 :(得分:1)

首先,您要检查用户名,密码和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())

即可