Mettons en place une authentification Facebook externe avec asp.net core–Partie 3

Après la mise en place des User Secrets, nous allons pouvoir tester notre connexion et l’authentification grâce à Facebook.

 

Lorsqu’on lance le site web, nous avons bien une page de connexion.
En cliquant dessus, nous atterrissons bien sur une proposition de connexion avec Facebook.

 

Question : comment cette page a-t-elle été générée ?

Lorsque l’on souhaite gérer l’authentification, nous avons deux choix :

  1. Le prévoir lors de la création de notre projet
  2. L’ajouter par la suite

 

Prévoir l’authentification au démarrage du projet

Ici, il s’agit lors du choix du type de projet, de choisir

image

Application web asp.net core

Puis, de définir MVC.net et sélectionner Modifier l’authentification, et choisir Comptes d’utilisateur individuel

image

 

Or lorsque l’on choisit cette option, en fait, on va laisser .net core gérer tout nativement depuis les librairies installées : oui, oui, même le html généré !

 

Installer l’authentification par la suite

Ainsi, que ce soit pour avoir la possibilité de modifier les pages par la suite, ou bien simplement pour installer l’authentification par la suite, vous allez pouvoir choisir les pages que vous souhaitez surcharger :

Vous cliquez sur Ajouter (depuis votre projet), et vous cliquez sur l’option du menu : « Nouvel élément générer automatiquement” (Scaffolding powa !).

 

En choisissant Identity, vous allez alors découvrir les pages que vous pourrez surcharger (choisissez-les toutes pour voir) :

image

choix Identity

 

image

Vous aurez alors noté que vous pouvez :

  • soit ajouter un nouveau contexte Entities dĂ©diĂ©
  • soit surcharger un contexte Entities dĂ©jĂ  existant

 

 

Nous avons alors rencontré un problème durant nos tests :

GetExternalLoginInfoAsync retourne toujours null : pourquoi ?

Une piste ici :

https://stackoverflow.com/questions/28999318/owin-authentication-signout-doesnt-seem-to-remove-the-cookie
A priori, le cookie d’authentification ayant déjà été généré, il n’est pas regénéré.
 
C’est bien ça !  Il fallait simplement supprimer le cache dans le navigateur (et supprimer les cookies et les données sauvegardées), avec la commande : 
CTRL + SHIFT + SUPPR
 

Et le tour est joué !

 

Note : il se peut également que l’url que vous ayez mis dans la configuration de l’application Facebook ne soit plus bonne (à cause du port aléatoire de IISExpress).

A vous de la redéfinir dans l’administration de votre Application Facebook.

 

Rendre accessible notre base de données

Maintenant, notre base de données n’est pas accessible, vu qu’elle n’a :

  1. ni été créée dans sql serveur
  2. ni mise à jour grâce aux migrations prévues dans le dossier Migration

 

Créer d’un snapshot pour une première Migration

Nous lançons alors la commande dotnet du dotnet CLI :

dotnet migrations add Initial

 

Et voilà dotnet qui nous crée un beau fichier de Migration !

dotnet ef migrations add Initial
info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
Entity Framework Core 2.1.2-rtm-30932 initialized ‘testauthentificationavecscallfolderContext’ using provider ‘Microsoft.EntityFrameworkCore.SqlServer’ with options: None
Done. To undo this action, use ‘ef migrations remove’

 

public partial class Initial : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: « AspNetRoles »,
columns: table => new
{
Id = table.Column<string>(nullable: false),
Name = table.Column<string>(maxLength: 256, nullable: true),
NormalizedName = table.Column<string>(maxLength: 256, nullable: true),
ConcurrencyStamp = table.Column<string>(nullable: true)
},
constraints: table =>
{
table.PrimaryKey(« PK_AspNetRoles », x => x.Id);
});

migrationBuilder.CreateTable(
name: « AspNetUsers »,
columns: table => new
{
Id = table.Column<string>(nullable: false),

 

……

 

Mise à jour de la base de données

En analysant le fichier appsettings.json, nous voyons que moteur Scaffolding a prévu une base de données.

A nous maintenant de la mettre à jour avec la commande suivante (qui appellera notre premier fichier de Migration tout juste généré) :

dotnet ef database update

 

Et nos tables sont bien créées :

image

 

Vous avez testé de votre côté ? Chez nous ça fonctionne bien ! Lâchez vos com’ !

Notre adresse

1 rue du guesclin
44000 Nantes

Notre téléphone

+33 2 79 65 52 87

Société

DevToBeCurious SARL
84860163900018 - Nantes B 848 601 639