Implementación de token por Autenticación en Laravel Parte 1

by | Jun 18, 2019 | Conocimiento General, Laravel

En esta ocasión presentaremos la implementación del token por medio de autenticación,  de esta forma tendremos la oportunidad de  tener mayor seguridad al consumir nuestros servicios para así evitar que usuarios ajenos al sistema tengan oportunidad de insertar,editar o eliminar información.  

1.- Lo primera que se debe realizar es crear un moddleware esto se realiza  ejecutando el siguiente comando en consola: 

  php artisan make:middleware APIToken 

2.- Una vez creado entraremos a la ruta app/Http/Middleware/APIToken y dentro de la función handle se agrega lo siguiente:

public function handle($request, Closure $next)
{
if($request->header('Authorization')){
return $next($request);
}
return response()->json([
'message' => 'Not a valid API request.',
]);
}

3.- Ahora entraremos al archivo Kernel.php y dentro de protected $routeMiddleware agregamos lo siguiente: 

protected $routeMiddleware = [
'APIToken' => \App\Http\Middleware\APIToken::class,
];

4.- Después dentro de la migración de la tabla que elegiremos para realizar nuestro login ponemos lo siguiente:

Schema::create('usuarios', function (Blueprint $table) {
$table->string('api_token',100)->nullable(); });

5.- una vez realizado lo anterior se migrarán las tablas para migrar por primera vez : php artisan migrate Para migrar si ya habías migrado: php artisan migrate:refresh 6.- Para implementarlo al controlador (en este caso el de usuarios se hará lo siguiente)

private $apiToken;
public function __construct()
{
$this->apiToken = uniqid(base64_encode(str_random(60)));
}

6.- Implementación en la función login() -El correo y la contraseña se ingresarán en formato json, si tanto el correo como la contraseña son correctos entonces pasará a actualizar en campo api_token para añadir el token, después nos regresará una respuesta en json.

public function login(Request $request){
$data = $request->json()->all();
$email = Usuarios::where('correo', '=', $data['correo'])->get();
if (count($email) == 0) {
return response()->json(['error' => 'Correo incorrecto']);
}
if( password_verify( $data['contraseña'],$email[0]->contraseña)){
$update = Usuarios::find($email[0]->id);
$update->api_token = $this->apiToken;
$update->save();

$array = array(
"id" => $email[0]->id,
"api_token" => $update->api_token
);
return response()->json($array,201);

}

else {
return response()->json(['error' => 'Unauthorized'], 401, []); }
}

8.- Ejemplo en postman

Entradas relacionadas

Descubre en 5 minutos las áreas de tu empresa puedes mejorar