{"id":25524,"date":"2021-06-08T17:40:00","date_gmt":"2021-06-08T14:40:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25524"},"modified":"2021-10-18T02:07:56","modified_gmt":"2021-10-17T23:07:56","slug":"authentification-d-application-mobile-a-l-aide-d-un-jeton-dans-laravel","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/authentification-d-application-mobile-a-l-aide-d-un-jeton-dans-laravel\/","title":{"rendered":"Authentification d&rsquo;application mobile \u00e0 l&rsquo;aide d&rsquo;un jeton dans Laravel"},"content":{"rendered":"<p>Utilisez-vous Laravel pour le back-end de votre application mobile? Si oui, vous recherchez probablement une solution simple pour l&rsquo;authentification de votre application mobile. De nombreux utilisateurs peuvent utiliser votre application mobile et vous souhaitez proc\u00e9der \u00e0 une authentification afin de fournir du contenu \u00e0 vos utilisateurs mobiles. Dans cet article, nous \u00e9tudions comment effectuer une authentification bas\u00e9e sur des jetons dans Laravel. Vous pouvez \u00e9galement utiliser la m\u00eame approche pour l&rsquo;authentification API REST.<\/p>\n<p>Nous allons int\u00e9grer <a href=\"https:\/\/laravel.com\/docs\/master\/sanctum\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Sanctum<\/a> qui est un syst\u00e8me d&rsquo;authentification l\u00e9ger. Vous pouvez le consid\u00e9rer comme un remplacement pour l&rsquo;authentification bas\u00e9e sur OAuth.<\/p>\n<p>Lors de l&rsquo;utilisation de Sanctum, les jetons API de l&rsquo;utilisateur sont stock\u00e9s dans la base de donn\u00e9es. Ce jeton doit \u00eatre envoy\u00e9 sous forme de <code>Bearer<\/code>jeton via un en- <code>Authorization<\/code>t\u00eate depuis votre application mobile vers les points de terminaison de l&rsquo;API Laravel. Ces jetons ont g\u00e9n\u00e9ralement un d\u00e9lai d&rsquo;expiration tr\u00e8s long (ann\u00e9es).<\/p>\n<p>Cela \u00e9tant dit, voyons comment utiliser Sanctum pour authentifier les applications mobiles.<\/p>\n<h3>Installer et configurer Laravel Sanctum<\/h3>\n<p>Pour commencer, vous devez d&rsquo;abord installer un package Sanctum sur votre application Laravel. Installez-le \u00e0 l&rsquo;aide de la commande\u00a0:<\/p>\n<pre><code>composer require laravel\/sanctum<\/code><\/pre>\n<p>Apr\u00e8s cela, publiez les fichiers de configuration et de migration de Sanctum en ex\u00e9cutant la commande ci-dessous.<\/p>\n<pre><code>php artisan vendor:publish --provider=\"LaravelSanctumSanctumServiceProvider\"<\/code><\/pre>\n<p>Ensuite, ex\u00e9cutez la commande de migration qui cr\u00e9era une <code>personal_access_tokens<\/code>table dans votre base de donn\u00e9es. Il s&rsquo;agit de la table o\u00f9 tous les jetons d&rsquo;API seront stock\u00e9s.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Par d\u00e9faut, chaque requ\u00eate dans Laravel n\u00e9cessite un jeton csrf. En cas de manque de ce jeton csrf, Laravel ne donne pas suite \u00e0 votre demande. Lorsqu&rsquo;il s&rsquo;agit de g\u00e9n\u00e9rer des jetons d&rsquo;API \u00e0 l&rsquo;aide de Sanctum, nous devons ignorer l&rsquo;envoi du jeton csrf. Pour cela, ajoutez <code>sanctum\/token<\/code>route \u00e0 la <code>$except<\/code>variable de <code>app\/Http\/Middleware\/VerifyCsrfToken.php<\/code>. Je vais cr\u00e9er cet <code>sanctum\/token<\/code>itin\u00e9raire dans les prochaines \u00e9tapes.<\/p>\n<pre><code>&lt;?php\n...\nclass VerifyCsrfToken extends Middleware\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* The URIs that should be excluded from CSRF verification.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @var array\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0protected $except = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'sanctum\/token'\n\u00a0\u00a0\u00a0\u00a0];\n}<\/code><\/pre>\n<p>\u00c0 des fins d&rsquo;authentification, nous devons \u00e9mettre un jeton pour les utilisateurs. Ainsi, vous devez utiliser le <code>HasApiTokens<\/code>trait pour le mod\u00e8le User comme suit.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppModels;\n...\nuse LaravelSanctumHasApiTokens;\n\u00a0\nclass User extends Authenticatable\n{\n\u00a0\u00a0\u00a0\u00a0use HasApiTokens, HasFactory, Notifiable;\n\u00a0\u00a0\u00a0\u00a0...\n}<\/code><\/pre>\n<h3>\u00c9mission de jetons d&rsquo;API pour l&rsquo;authentification<\/h3>\n<p>Afin d&rsquo;envoyer un jeton Bearer avec l&rsquo;en-t\u00eate Authorization dans chaque requ\u00eate, il faut d&rsquo;abord \u00e9mettre un jeton API. Je vais cr\u00e9er une m\u00e9thode qui g\u00e9n\u00e8re un jeton API pour chaque utilisateur. Pour \u00e9mettre un jeton, vous devrez envoyer l&rsquo;e-mail, le mot de passe et l&rsquo;appareil d&rsquo;un utilisateur.<\/p>\n<p>Ajoutez l&rsquo;itin\u00e9raire ci-dessous dans le <code>routes\/web.php<\/code><\/p>\n<pre><code>Route::post('\/sanctum\/token', 'APITokenController@create_token');<\/code><\/pre>\n<p>Ensuite, cr\u00e9ez un contr\u00f4leur <code>APITokenController<\/code>par la commande\u00a0:<\/p>\n<pre><code>php artisan make:controller APITokenController<\/code><\/pre>\n<p>D\u00e9finissez la <code>create_token()<\/code>m\u00e9thode dans le contr\u00f4leur nouvellement cr\u00e9\u00e9 comme suit.<\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse AppModelsUser;\nuse IlluminateHttpRequest;\nuse IlluminateSupportFacadesHash;\nuse IlluminateValidationValidationException;\n\u00a0\nclass APITokenController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0public function create_token(Request $request)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$request-&gt;validate([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'email' =&gt; 'required|email',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'password' =&gt; 'required',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'device_name' =&gt; 'required',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = User::where('email', $request-&gt;input('email'))-&gt;first();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! $user ||! Hash::check($request-&gt;input('password'), $user-&gt;password)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'error' =&gt; 'The provided credentials are incorrect.'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $user-&gt;createToken($request-&gt;input('device_name'))-&gt;plainTextToken;\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Le code ci-dessus v\u00e9rifie d&rsquo;abord les informations d&rsquo;identification de l&rsquo;utilisateur. Si les informations d&rsquo;identification sont correctes, il envoie en r\u00e9ponse un jeton au format texte brut. Ici, je re\u00e7ois des valeurs d&rsquo;entr\u00e9e \u00e9tant donn\u00e9 qu&rsquo;elles seront envoy\u00e9es dans un objet JSON.<\/p>\n<p>Essayez d&rsquo;envoyer une requ\u00eate POST avec les informations d&rsquo;identification de l&rsquo;utilisateur et vous devriez recevoir le jeton en texte brut. Ce jeton API peut \u00eatre stock\u00e9 sur l&rsquo;appareil mobile et utilis\u00e9 dans un en-t\u00eate lors de l&rsquo;envoi de requ\u00eates API.<\/p>\n<p>Dans mon cas, j&rsquo;utilise l&rsquo; <a href=\"https:\/\/themewp.inform.click\/fr\/rest-client-extension-pour-visual-studio-code\/\" title=\"extension Rest Client du code VS\">extension Rest Client du code VS<\/a> et ma demande <code>sanctum\/token<\/code>est comme indiqu\u00e9 dans la capture d&rsquo;\u00e9cran ci-dessous.<\/p>\n<p>Rendez-vous dans la base de donn\u00e9es et vous devriez voir que votre jeton est stock\u00e9 dans la <code>personal_access_tokens<\/code>table.<\/p>\n<p>Sanctum cr\u00e9era plusieurs jetons chaque fois que vous emprunterez la <code>sanctum\/token<\/code>route avec les informations d&rsquo;identification correctes. Si vous souhaitez r\u00e9voquer le jeton pr\u00e9c\u00e9dent, ajoutez l&rsquo;instruction ci-dessous avant la derni\u00e8re instruction de retour du code ci-dessus.<\/p>\n<pre><code>\/\/ Revoke previous tokens...\n$user-&gt;tokens()-&gt;delete();\n\u00a0\nreturn $user-&gt;createToken($request-&gt;input('device_name'))-&gt;plainTextToken;<\/code><\/pre>\n<p>Enfin, prot\u00e9gez les routes en ajoutant le <code>auth:sanctum<\/code>middleware comme suit.<\/p>\n<pre><code>Route::middleware('auth:sanctum')-&gt;get('\/products', function() {\n\u00a0\u00a0\u00a0\u00a0\/\/ write a code\n});<\/code><\/pre>\n<p>Le middleware valide si le jeton est re\u00e7u dans un en-t\u00eate d&rsquo;autorisation. Si le jeton API est correct, alors seul il permet de poursuivre la route.<\/p>\n<p>Par exemple, dans le code VS, vous pouvez envoyer le jeton API en tant que jeton Bearer avec l&rsquo;en-t\u00eate d&rsquo;autorisation, comme indiqu\u00e9 ci-dessous.<\/p>\n<p>J&rsquo;esp\u00e8re que vous comprenez comment int\u00e9grer l&rsquo;authentification des applications mobiles \u00e0 l&rsquo;aide d&rsquo;un jeton dans Laravel. J&rsquo;aimerais entendre vos pens\u00e9es et suggestions dans la section des commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-creer-un-blog-avec-laravel\/\" title=\"Comment cr\u00e9er un blog avec Laravel\">Comment cr\u00e9er un blog avec Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/un-guide-sur-l-ajout-de-google-recaptcha-v3-a-votre-site-web-laravel\/\" title=\"Un guide sur l&#039;ajout de Google reCAPTCHA v3 \u00e0 votre site Web Laravel\">Un guide sur l&rsquo;ajout de Google reCAPTCHA v3 \u00e0 votre site Web Laravel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-telecharger-une-video-sur-youtube-dans-l-application-laravel\/\" title=\"Comment t\u00e9l\u00e9charger une vid\u00e9o sur YouTube dans l&#039;application Laravel\">Comment t\u00e9l\u00e9charger une vid\u00e9o sur YouTube dans l&rsquo;application Laravel<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans ce tutoriel, nous \u00e9tudions comment int\u00e9grer l&rsquo;authentification des applications mobiles en utilisant Laravel comme backend. Laravel Sanctum est un package qui<\/p>\n","protected":false},"author":1,"featured_media":21639,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[497],"tags":[844],"class_list":["post-25524","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel2-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25524","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/comments?post=25524"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/25524\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/21639"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=25524"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=25524"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=25524"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}