2017-01-18 5 views
2

У меня есть база данных radius с таблицей radcheck без миграции. Мне нужна таблица radcheck как аутентификация таблицы, а не users.i попробуйте изменить config/auth от 'пользователя' до radcheck. но ошибкаКак сделать аутентификацию laravel с deferent table по умолчанию

Таблица radcheck:

id, 
username, 
attribute, 
op, 
value=> as password, 
barcode 

Код в radcheck.php:

namespace App\Model\Management; 
use Illuminate\Database\Eloquent\Model; 

class Radcheck extends Model 
{ 

    protected $table = 'radcheck'; 
    protected $primarykey = 'id'; 
    protected $fillable = ['id','username','attribute','op','value','barcode']; 
    public $timestamps = false; 
    public function radusergroups(){ 
     return $this->hasMany('App\Model\Management\Radusergroup'); 
    } 
} 

, а затем, я изменить конфигурационный/авторизацию от пользователей radcheck в Config/auth:

'providers' => [ 
    'users' => [ 
     'driver' => 'eloquent', 
     'model' => App\Model\Management\Radcheck::class, 
    ], 

Ошибка выглядит так:

Аргумент 1, переданный в Illuminate \ Auth \ EloquentUserProvider :: validateCredentials() должен быть экземпляром Illuminate \ Contracts \ Auth \ Authenticatable, экземпляром приложения \ Model \ Management \ Radcheck, указанным в C: \ xampp \ HTDOCS \ е доступа \ система \ поставщика \ Laravel \ рамки \ SRC \ Осветите \ Auth \ SessionGuard.php в строке 385 и определяется

ответ

1

EloquentUserProvider принимают только экземпляр Illuminate\Foundation\Auth\User, поэтому вам нужно расширить свой Ra DУдостоверьтесь, по Illuminate\Foundation\Auth\User

Просто измените RadCheck на следующий код

radcheck.php

namespace App\Model\Management; 

use Illuminate\Notifications\Notifiable; 
use Illuminate\Foundation\Auth\User as Authenticatable; 

class Radcheck extends Authenticatable 
{ 
    use Notifiable; 

    protected $table = 'radcheck'; 
    protected $primarykey = 'id'; 
    protected $fillable = ['id','username','attribute','op','value','barcode']; 
    public $timestamps = false; 
public function radusergroups(){ 
     return $this->hasMany('App\Model\Management\Radusergroup'); 
    } 
} 
+0

Я получил его, а не ошибку. но я стараюсь, я не могу войти и показать «Эти учетные данные не соответствуют нашим записям». i используя поле «Значение» как «Пароль», как изменить аутентификацию по умолчанию с поля пароль на значение? –

+1

@muzamilindra напрямую вы не можете изменить поле пароля. Но вы можете указать свое имя столбца в классе модели 'public function getAuthPassword() { return $ this-> password_column; } ' –

+0

спасибо большое за ответ. да я получил его. i исправлено, а не ошибка из регистра и входа. но логин по умолчанию laravel с bcrypt encription, я хочу логин без процесса bcrypt, потому что я удаляю bcrypt-процесс на контроллере регистра. –

1

модель должна простираться Authenticable:

use Illuminate\Foundation\Auth\User as Authenticable; 

class Radcheck extends Authenticable 
+0

я получил его, а не ошибка. но я стараюсь, я не могу войти и показать «Эти учетные данные не соответствуют нашим записям». я использую поле «Значение» в качестве «Пароль», как изменить аутентификацию по умолчанию от пароля поля до значения? –

Смежные вопросы