Laravel 5.1 uygulamasında, VWT yetkisini vatansız oturum açma ve doğrulama için kullandığım bir API bölümünde oluşturdum. Uygulama, laravel tarafından sağlanan Auth hizmetini ve 'kullanıcı' tablosunu varsayılan olarak kullanır. API'm 'istemciler' tablosunda kimlik doğrulaması gerekiyor. Auth.php yapılandırma dosyasını model => 'Models\AuthClient'
ve table => 'clients'
olarak değiştiren bir Middleware hazırlayarak JWT'yi kullanırken kullanıcı tablosunu geçici olarak yönetmeyi başardım. Tüm iyi, doğrulama çalışmaları, kimlik bilgileri doğru olduğunda belirteci oluşturur.Laravel 5.1 JWT Oturum açmış kullanıcıyı özel tablodan alın
Ara Katman:
public function handle($request, Closure $next)
{
\Config::set('auth.model', 'App\Models\AuthClient');
\Config::set('auth.table', 'clients');
return $next($request);
}
ApiAuthController giriş fonksiyonu:
public function getContracts(Request $request)
{
$client = JWTAuth::parseToken()->authenticate();
$contracts = $client->contracts;
dd($client);
return response()->json($contracts);
}
authenticate()
: Böyle belirteci gelen açmış kullanıcıyı almaya çalıştığınızda
public function authenticate(Request $request)
{
$cred = $request->only('email', 'password', 'client_code');
$validator = $this->validator($cred);
if($validator->fails()) {
return response()->json($validator->errors());
}
$credentials = ['email'=> $cred['email'], 'password'=> $cred['password']];
/*
* If the user enters a "client_code", login the user with that credential
*/
if(issetNotEmpty($cred['client_code'])) {
\App\Models\AuthClient::$defaultAuth = 'client_code';
$credentials = ['client_code' => $cred['client_code'], 'password' => $cred['client_code']];
}
try {
if (!$token = JWTAuth::attempt($credentials)) {
return response()->json(['error' => 'Datele de autentificare nu sunt corecte.'], 401);
}
} catch (JWTException $e) {
// something went wrong
return response()->json(['error' => 'could_not_create_token'], 500);
}
// if no errors are encountered we can return a JWT
return response()->json(compact('token'));
}
Benim sorundur işlevi, 'client' altının yerine 'users' tablosundan bir eşleşme modeli döndürür ümit auth.php ve jwt.php 'Models \ AuthClient' olarak ayarladım ve ID 'istemcilerden'.
AuthCient Modeli:
class AuthClient extends Model implements AuthenticatableContract, CanResetPasswordContract
{
use Authenticatable, CanResetPassword;
protected $table = 'clients';
public static $defaultAuth = 'email';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [ 'email', 'login_password', 'api_token'];
protected $hidden = ['login_password', 'api_token'];
}
ben eksik?
Teşekkürler!