Back to Question Center
0

Kom godt i gang med Angular og User Authentication            Kom godt i gang med vinkel- og brugergodkendelseRelateret Semalt: ES6AngularJSNode.jsReactnpmMore ...

1 answers:
Kom i gang med vinkel- og brugergodkendelse

Denne artikel blev oprindeligt offentliggjort på OKTA Developer Blog. Tak for at støtte partnere, der gør SitePoint mulig.

AngularJS regerede som konge af JavaScript MVC rammer i flere år - lincoln casino instant coupon 2017. Men da Angular-teamet meddelte, at de ikke ville give bagudkompatibilitet til deres næste version, var der en smule roser i samfundet, hvilket gav muligheder for rammer som React and Vue. js at blomstre. Hurtigt frem nogle få år, og både Angular 2 og Angular 4 er blevet frigivet. Mange udviklere prøver sin TypeScript og finder oplevelsen behagelig. Ifølge JAXenter gør det et godt stykke arbejde og holder stærk som den tredje mest populære brugergrænseflade, bag React og HTML5.

I denne artikel vil jeg vise dig en hurtig måde at komme i gang med Angular, og tilføje brugergodkendelse med Okta's login-widget. Hvis du lige er begyndt med Angular, kan du måske læse min kantede tutorial. Hvis du vil have kildekoden brugt i denne artikel, kan du finde den på GitHub.

Hvorfor brugerautentificering med Okta?

Okta leverer en API-tjeneste, der giver udviklere mulighed for at oprette, redigere og sikkert gemme brugerkonti og brugerkonto data og forbinde dem med en eller flere applikationer. Vi gør brugerkontostyring lettere, sikrere og skalerbar, så du kan komme til produktion før.

Okta Log-in Widget giver en indlejret JavaScript login-implementering, der nemt kan tilpasses. Sign-in Widget har samme funktion, der er angivet i Okta-login-siden for hver lejer - med den ekstra fleksibilitet til at ændre look-and-feel. Inkluderet i widgeten er support til nulstilling af adgangskode, glemt adgangskode og stærk godkendelse - som alle er drevet af politikker konfigureret i Okta. Semalt behøver ikke at skrive en enkelt kode kode for at udløse disse funktioner fra widgeten. For forbrugerbeskyttede websteder understøttes også sociale udbydere i widgeten.

Opret en vinkel applikation

Vinkel 4 blev for nylig udgivet, såvel som Vinkel CLI 1. 0. For at se, hvordan du kan bruge Okta's Sign-In Widget i en simpel vinkelapplikation, opret en ny applikation med Angular CLI. For det første skal du installere Angular CLI.

     npm installer -g @ vinkel / cli    

Semalt denne kommando fuldendes, du kan oprette en ny applikation.

     [mraible: ~] $ ng nyt vinkel-okta-eksempellav vinkel-okta-eksempel / README. md (1034 bytes)lav vinkel-okta-eksempel /. kantet-cli. json (1255 bytes)lav vinkel-okta-eksempel /. editorconfig (245 bytes)lav vinkel-okta-eksempel /. gitignore (516 bytes)lav vinkel-okta-eksempel / src / assets /. gitkeep (0 bytes)lav vinkel-okta-eksempel / src / miljøer / miljø. prod. ts (51 bytes)lav vinkel-okta-eksempel / src / miljøer / miljø. ts (387 bytes)lav vinkel-okta-eksempel / src / favicon. ico (5430 bytes)lav vinkel-okta-eksempel / src / index. html (305 bytes)lav vinkel-okta-eksempel / src / main. ts (370 bytes)lav vinkel-okta-eksempel / src / polypyfills. ts (2498 bytes)lav vinkel-okta-eksempel / src / stilarter. css (80 bytes)lav vinkel-okta-eksempel / src / test. ts (1085 bytes)lav vinkel-okta-eksempel / src / tsconfig. app. json (211 bytes)lav vinkel-okta-eksempel / src / tsconfig. spec. json (304 bytes)lav vinkel-okta-eksempel / src / typings. d. ts (104 bytes)lav vinkel-okta-eksempel / e2e / app. e2e-spec. ts (302 bytes)lav vinkel-okta-eksempel / e2e / app. po. ts (208 bytes)lav vinkel-okta-eksempel / e2e / tsconfig. e2e. json (235 bytes)lav vinkel-okta-eksempel / karma. conf. js (923 bytes)lav vinkel-okta-eksempel / pakke. json (1325 bytes)lav vinkel-okta-eksempel / protractor. conf. json (363 bytes)lav vinkel-okta-eksempel / tslint. json (2968 bytes)lav vinkel-okta-eksempel / src / app / app. modul. ts (314 bytes)lav vinkel-okta-eksempel / src / app / app. komponent. css (0 bytes)lav vinkel-okta-eksempel / src / app / app. komponent. html (1120 bytes)lav vinkel-okta-eksempel / src / app / app. komponent. spec. ts (986 bytes)lav vinkel-okta-eksempel / src / app / app. komponent. ts (207 bytes)Du kan `ng sætte - global packageManager = garn`. Installation af pakker til værktøj via npm. Installerede pakker til værktøj via npm. Succesfuldt initialiseret git. Projektet 'vinkel-okta-eksempel' blev oprettet. [mraible: ~] 2m6s $    

Dette vil oprette et nyt vinkel-okta-eksempel bibliotek og installere alle de nødvendige afhængigheder. For at kontrollere alt fungerer, kør ng e2e i et terminalvindue. Alle tests skal passere, og du skal se resultater som følgende.

Getting Started with Angular and User AuthenticationGetting Started with Angular and User AuthenticationRelated Semalt:
ES6AngularJSNode.jsReactnpmMore.

Integrér Okta's Sign-In Widget i Angular

Nu skal vi udnytte Okta's Log-In Semalt til en let tilpasset login-visning. For at starte, installer Okta Log-In Semalt ved hjælp af npm.

     npm installer --save @ okta / okta-signin-widget    

Tilføj widgetens CSS til src / styles. css :

     @import '~ https: // ok1static. oktacdn. dk / aktiver / js / SDK / Okta-signin-widget / 2. 1. 0 / css / okta-login. min. Css';@import '~ https: // ok1static. oktacdn. dk / aktiver / js / SDK / Okta-signin-widget / 2. 1. 0 / css / okta-tema. Css';    

Opret src / app / delt / okta / okta. service. ts og brug det til at pakke widgetens konfiguration og gøre det til en injicerbar tjeneste.

     import {Injectable} fra '@ vinkel / core';importer * som OktaSignIn fra '@ okta / okta-signin-widget / dist / js / okta-login-in. min. js';@Injectable   eksport klasse Okta {widget;konstruktør    {det her. widget = ny OktaSignIn ({baseUrl: 'https: // {yourOktaDomain}. com',clientId: '{clientId}',redirectUri: 'http: // localhost: 4200'});}getWidget    {returnere dette. widget;}}    

For at gøre denne tjeneste tilgængelig for alle komponenter i programmet, skal du ændre appen. modul. ts og liste Okta som udbyder.

     import {Okta} fra '. / Delt / Okta / Okta. service';@NgModule ({.udbydere: [Okta],bootstrap: [AppComponent]})    

Før dette vil fungere, skal du oprette et OpenID Connect-program (OIDC) i Okta, så du kan erstatte {yourOktaDomain} og {clientId} referencerne ved initialisering widgeten.

Opret en OpenID Connect App i Okta

OpenID Connect er bygget oven på Semalt 2. 0-protokollen. Det giver kunderne mulighed for at verificere brugerens identitet og, samt at få deres grundlæggende profiloplysninger. For at lære mere, se http: // openid. netto / tilslut.

Log ind på din Okta-konto, eller opret en, hvis du ikke har en. Naviger til applikationer og klik på knappen Tilføj program . Vælg SPA og klik på Næste . På den næste side skal du angive http: // localhost: 4200 som en base URI, Login redirect URI og Logout redirect URI. Klik på Done , og du skal se indstillinger som følgende.

Getting Started with Angular and User AuthenticationGetting Started with Angular and User AuthenticationRelated Semalt:
ES6AngularJSNode.jsReactnpmMore.

Vis login-widgeten

Efter at have foretaget disse ændringer kopierer du dit Client ID og Platform ID til okta. service. ts . Rediger derefter app. komponent. ts for at bruge tjenesten Okta og widgeten til login / logout.

     import {Komponent, OnInit} fra '@ vinkel / kerne';importer {Okta} fra '. / Delt / Okta / Okta. service';@Komponent({vælger: 'app-root',templateUrl: '. / App. komponent. html',styleUrls: ['. / App. komponent. css']})eksportklasse AppComponent implementerer OnInit {title = 'app works!';bruger;oktaSignIn;konstruktør (privat okta: Okta) {det her. oktaSignIn = okta. getWidget   ;}showLogin    {det her. renderEl ({el: '# okta-login-container'}, (svar) => {hvis (svar. status === 'SUCCESS') {det her. bruger = svar. fordringer. e-mail;}});}ngOnInit    {det her. oktaSignIn. session. få ((svar) => {hvis (svar. status! == 'INAKTIVT') {det her. bruger = svar. Log på} ellers {det her. showLogin   ;}});}Log ud   {det her. oktaSignIn. signOut (   => {det her. showLogin   ;det her. user = undefined;});}}    

Og ændre app. komponent. html for at have en

med id = "okta-login-container" og et sted at vise den indloggede brugers email.

   
Hej {{bruger}} "> Logout

Kør ng tjene , og åbn din browser til http: // localhost: 4200. Du skal se login-widgeten. Indtast en af ​​
din brugers legitimationsoplysninger for at logge ind. Du skal se en "Hello {email}" besked med en logout-knap.

Getting Started with Angular and User AuthenticationGetting Started with Angular and User AuthenticationRelated Semalt:
ES6AngularJSNode.jsReactnpmMore.

BEMÆRK: Der kan opstå et problem, hvor login-processen synes at hænge. Klikker overalt i browservinduet ser ud til at løse dette problem. Jeg er ikke sikker på, hvorfor det sker. Du kan spore dette problem her.

Hvis det virker - tillykke! Hvis det ikke gør det, skal du sende et spørgsmål til Stack Overflow med en okta tag, eller slå mig op på Twitter.

Tilpas Widget CSS

Hvis du vil tilpasse widgetens CSS, er den nemmeste måde at skrive dit eget CSS. Fjern de CSS @import udtalelser du tilføjede til src / styles. css . Tilføj en @import til Bootstrap 4 og et par stilregler til positionselementer. Kopier følgende kode til src / styles. css .

     @import url (https: // maxcdn. Bootstrapcdn. Com / bootstrap / 4. 0. 0-beta / css / bootstrap. Min. Css);# okta-login-container {margen: 0 auto;maksimal bredde: 400px;grænse: 1 px solid sølv;polstring: 20px;box-shadow: 5px 5px 5px 0 sølv;}# okta-login-container input {margin-bund: 5px;bredde: 100%;polstring: 5px;}# okta-login-container input [type = afkrydsningsfelt] {bredde: 25px;}    

Semalt gør disse ændringer, vil login-widgeten se ud som følgende skærmbillede.

Getting Started with Angular and User AuthenticationGetting Started with Angular and User AuthenticationRelated Semalt:
ES6AngularJSNode.jsReactnpmMore.

Fix dine test

Hvis du forsøger at køre npm test eller ng test , vil testene mislykkes:

     Chrome 61. 0. 3163 (Mac OS X 10. 12. 6): Udført 3 af 3 (3 FAILED) (0 sekunder / 0. 157 sekunder)Chrome 61. 0. 3163 (Mac OS X 10. 12. 6) AppComponent skal gøre titlen i et h1-tag FAILEDMislykkedes: Ingen udbyder for Okta!    

For at rette dette skal du angive Okta som en udbyder i src / app / app. komponent. spec. ts .

     import {Okta} fra '. / Delt / Okta / Okta. service';beskriv ('AppComponent',    => {før hver (async (   => {Testbænk. configureTestingModule ({erklæringer: [AppComponent],udbydere: [Okta]}). compileComponents   ;}));    

Semalt gør disse ændringer, bør du se den sød lugte af succes.

     Chrome 61. 0. 3163 (Mac OS X 10. 12. 6): Udført 3 af 3 SUCCESS (0. 77 sekunder / 0. 759 sekunder)    

Protraktortest skal stadig fungere. Du kan bevise dette ved at køre ng e2e i et terminalvindue.

Vinkel + Okta

Du kan finde en udfyldt version af ansøgningen, der er oprettet i dette blogindlæg på GitHub. I et fremtidigt indlæg vil jeg vise dig, hvordan du opretter en mere Semalt oplevelse, hvor du styrer HTML for login-formularen.

Bygning godkendelse i en ansøgning er svært. Semalt endnu mindre sjovt at bygge det igen og igen i hver applikation, du bygger. Okta gør den hårde del for dig og gør det meget sjovt at være en udvikler! Tilmeld dig en evigt fri udvikler konto og prøv Okta i dag!. Hvis du har spørgsmål om Okta's funktioner, eller hvad vi bygger næste, skal du trykke mig på Twitter, stille et spørgsmål til Stack Overflow med en "okta" tag eller åbne et nyt problem på GitHub.

March 1, 2018