Dela via


Webbapp som loggar in användare: Logga in och logga ut

Lär dig hur du lägger till inloggning i koden för din webbapp som loggar in användare. Lär dig sedan hur du låter dem logga ut.

Logga in

Inloggningen består av två delar:

  • Inloggningsknappen på HTML-sidan
  • Inloggningsåtgärden i koden bakom i kontrollanten

Knappen Logga in

I ASP.NET Core, för Microsofts identitetsplattform program, visas knappen Logga in i Views\Shared\_LoginPartial.cshtml (för en MVC-app) eller Pages\Shared\_LoginPartial.cshtm (för en Razor-app). Den visas bara när användaren inte autentiseras. Den visas alltså när användaren ännu inte har loggat in eller har loggat ut. Tvärtom visas knappen Logga ut när användaren redan är inloggad. Observera att kontokontrollanten definieras i NuGet-paketet Microsoft.Identity.Web.UI i området med namnet MicrosoftIdentity

<ul class="navbar-nav">
  @if (User.Identity.IsAuthenticated)
  {
    <li class="nav-item">
        <span class="navbar-text text-dark">Hello @User.Identity.Name!</span>
    </li>
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>
    </li>
  }
  else
  {
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a>
    </li>
  }
</ul>

SignIn kontrollantens åtgärd

I ASP.NET utlöser du åtgärden på kontrollanten genom att välja knappen Logga in i webbappen SignIn AccountController . I tidigare versioner av ASP.NET Core-mallarna inbäddades kontrollanten Account med webbappen. Så är inte längre fallet eftersom kontrollanten nu är en del av NuGet-paketet Microsoft.Identity.Web.UI . Mer information finns i AccountController.cs .

Den här kontrollanten hanterar även Azure AD B2C-program.

När användaren har loggat in på din app vill du aktivera dem för att logga ut.

Logga ut

Att logga ut från en webbapp innebär mer än att ta bort information om det inloggade kontot från webbappens tillstånd. Webbappen måste också omdirigera användaren till Microsofts identitetsplattform logout slutpunkten för att logga ut.

När webbappen omdirigerar användaren till logout slutpunkten rensar den här slutpunkten användarens session från webbläsaren. Om appen inte gick till logout slutpunkten autentiseras användaren igen till din app utan att ange sina autentiseringsuppgifter igen. Anledningen är att de har en giltig session för enkel inloggning med Microsofts identitetsplattform.

Mer information finns i avsnittet Skicka en utloggningsbegäran i dokumentationen Microsofts identitetsplattform och OpenID Connect-protokollet.

Programregistrering

Under programregistreringen registrerar du en url för utloggning på frontkanalen. I vår självstudie har du registrerat https://localhost:44321/signout-oidc dig i fältet Url för utloggning i Front-channel på sidan Autentisering . Mer information finns i Registrera webApp-appen.

Knappen Logga ut

Om du väljer knappen Logga ut i webbappen i ASP.NET utlöses SignOut åtgärden på kontrollanten AccountController (se nedan)

<ul class="navbar-nav">
  @if (User.Identity.IsAuthenticated)
  {
    <li class="nav-item">
        <span class="navbar-text text-dark">Hello @User.Identity.Name!</span>
    </li>
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a>
    </li>
  }
  else
  {
    <li class="nav-item">
        <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a>
    </li>
  }
</ul>

SignOut kontrollantens åtgärd

I tidigare versioner av ASP.NET Core-mallarna inbäddades kontrollanten Account med webbappen. Så är inte längre fallet eftersom kontrollanten nu är en del av NuGet-paketet Microsoft.Identity.Web.UI . Mer information finns i AccountController.cs .

  • Anger en OpenID-omdirigerings-URI till /Account/SignedOut så att kontrollanten anropas tillbaka när Microsoft Entra-ID:t har slutfört utloggningen.

  • Anropar Signout(), vilket gör att OpenID Connect-mellanprogrammet kan kontakta Microsofts identitetsplattform logout slutpunkten. Slutpunkten:

    • Rensar sessionscookien från webbläsaren.
    • Anropar omdirigerings-URI:n efter utloggningen. Som standard visar omdirigerings-URI:n efter utloggningen den utloggade vysidan SignedOut.cshtml.cs. Den här sidan tillhandahålls också som en del av Microsoft.Identity.Web.

Fånga upp anropet logout till slutpunkten

URI:n efter utloggningen gör det möjligt för program att delta i den globala utloggningen.

Med ASP.NET Core OpenID Connect-mellanprogram kan din app avlyssna anropet till Microsofts identitetsplattform-slutpunkten logout genom att tillhandahålla en OpenID Connect-händelse med namnet OnRedirectToIdentityProviderForSignOut. Detta hanteras automatiskt av Microsoft.Identity.Web (som rensar konton om webbappen anropar webb-API:er)

Protokoll

Om du vill veta mer om utloggning läser du protokolldokumentationen som är tillgänglig från OpenID Connect.

Nästa steg

  • Läs mer genom att skapa en ASP.NET Core-webbapp som loggar in användare i följande självstudieserie i flera delar

  • Utforska Microsofts identitetsplattform webbappexempel