我想使用laravel 5.2 auth api为管理员和用户进行身份验证,我是一个用户表,我在其中为用户和管理员定义了ENUM类型角色字段,所以我需要仅使用表,但管理员和用户登录的路径和路径不同。
我已成功使用以下命令创建用户身份验证。
php artisan make:auth
但我无法理解如何为管理员实施身份验证。
在回答之前请记住,只有一个用户表具有角色字段和管理员和用户登录的不同视图。成功登录后,用户将重定向到主页,管理员应重定向到管理员/仪表板。
由于
答案 0 :(得分:1)
您可以使用https://github.com/romanbican/roles包...
if ($user->is('admin')) { // you can pass an id or slug
// or alternatively $user->hasRole('admin')
}
答案 1 :(得分:0)
我已经完成了我的用户身份验证,现在我只是为了管理员身份验证,并且它没有响应检查我的数据库用户名&密码。 fyi,我在phpmyadmin手动创建了管理员表。所以在迁移文件夹中没有create_admin_table.php文件。帮助:(
这是我的控制器
use Illuminate\Support\Facades;
use Hash;
use Auth;
use App\Admin; // i created this Model for admin
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Http\Requests;
function login(Request $req){
$email = $req->input('email');
$password = $req->input('password');
if(Auth::guard('admin')->attempt([
'email' => $email,
'password' => $password
]))
{
return redirect('/signin');
}else{
return redirect('/Admin/signin');
}
}
我的内核:
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'admin' => \App\Http\Middleware\RedirectIfNotAdmin::class,
];
我的身份证明:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
'admin' => [
'driver' => 'session',
'provider' => 'admins',
],
'admin-api' => [
'driver' => 'token',
'provider' => 'admins',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
'table' => 'users',
],
'admins' => [
'driver' => 'eloquent',
'model' => App\Admin::class,
'table' => 'admins',
],
],