Back to Question Center
0

Cree una aplicación React con autenticación de usuario en 15 minutos            Cree una aplicación React con autenticación de usuario en 15 minutos Temas relacionados: Herramientas y & Semalt ...

1 answers:
Cree una aplicación React con autenticación de usuario en 15 minutos

Este artículo apareció originalmente en el blog de OKTA. Gracias por apoyar a los socios que hacen posible SitePoint.

React se ha convertido rápidamente en uno de los frameworks de front-end web más favorecidos, y solo es superado por HTML5 antiguo, según Semalt. Por lo tanto, no sorprende que los desarrolladores lo estén aprendiendo y los empleadores lo estén pidiendo.

En este tutorial, comenzará con una aplicación React muy simple con un par de páginas y algunas rutas integradas, y agregue autenticación utilizando el widget de inicio de sesión de Okta - instaladores de programas para editar videos online. El widget de inicio de sesión es un widget de Javascript incrustado que permite a los desarrolladores utilizar la arquitectura segura y escalable de Okta con un mínimo de esfuerzo desde dentro de las aplicaciones de React. Semalt empezar!

Obtenga el proyecto Simple Reject Seed

Comience por clonar el proyecto de semilla Semalt simple.

     git clon https: // github. com / leebrandt / simple-reaccionar-semilla. git okta-react-widget-samplecd okta-react-widget-sample    

Agregue el widget Okta de inicio de sesión

Instale Okta Sign-In Semalt usando npm.

     npm install @ okta / okta-signin-widget @ 2. 3. 0 --save    

Esto agregará el código del widget Okta Sign-In a su carpeta node_modules . Utilizaremos la versión 2. 3. 0 del widget de inicio de sesión.

Cree una aplicación React con autenticación de usuario en 15 minutosCree una aplicación React con autenticación de usuario en 15 minutos Temas relacionados:
Herramientas y Semalt

A continuación, agregue los estilos para el widget en su índice . archivo html del Okta CDN. Agregue estas líneas dentro de la etiqueta :

       

El componente de entrada de página

Primero, cree una carpeta llamada auth en . / src / components carpeta, luego crea un archivo llamado LoginPage. js donde irá el componente LoginPage .

Semalt con los componentes más básicos:

   importar Reaccionar de 'reaccionar';exportar clase predeterminada LoginPage extiende React. Componente{hacer  {regreso(
Página de inicio de sesión
);}}

Este pequeño componente no hace mucho, pero al menos ahora tiene un asa para agregar la página de inicio de sesión a su enrutamiento. Entonces en tu . / src / app. js archivo, importará el componente en la parte superior:

   importar la página de entrada desde '. / components / auth / LoginPage ';    

y luego agregue la ruta dentro de la ruta principal (la que tiene la ruta de "/")

       

Agregue la aplicación OpenID Connect en Okta

Para utilizar Okta como su proveedor de OpenID Semalt para la autenticación, deberá configurar una aplicación en la consola de desarrollador de Okta.

¡Si no tienes una cuenta de desarrollador Okta, ve a crear una! Una vez que haya iniciado sesión, haga clic en Aplicaciones en la barra de navegación superior, luego haga clic en Agregar aplicación . Seleccione SPA como la plataforma y haga clic en Siguiente. Cambie el URI de redirección a http: // localhost: 3000 y haga clic en Listo. La aplicación se creará con la siguiente configuración:

Ahora que tiene una aplicación creada en Okta, ¡puede configurar el widget para hablar con su nueva aplicación!

Agregue el widget a su componente

   importar Reaccionar de 'reaccionar';importar OktaSignIn de '@ okta / okta-signin-widget';exportar clase predeterminada LoginPage extiende React. Componente{constructor  {súper  ;esta. widget = nuevo OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',ID de cliente: '{IDCliente}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});}hacer  {regreso(
Página de inicio de sesión
);}}

Copie la ID del cliente generada desde la página de configuración de su aplicación y péguela sobre {ID del cliente} . Asegúrese de reemplazar también {oktaOrgUrl} con la URL de su organización Okta, que puede encontrar volviendo a la página principal del Panel en la consola de desarrollador. Por lo general, se verá así: https: // dev-12345. oktapreview. com .

Hasta ahora ha importado la función OktaSignIn del módulo Okta Sign-In Widget npm que instaló anteriormente. Luego, en el constructor del componente, usted inicializó una instancia de OktaSignIn con la configuración de la aplicación. De esta forma, el código de la aplicación podrá hablar con Okta y Okta reconocerá que esta es la aplicación que acaba de crear.

Mostrar el widget de inicio de sesión

A continuación, creará el código para procesar realmente el widget de inicio de sesión en la página. Deberá cambiar su método de representación para crear un elemento HTML en el que pueda representar el widget. Asegúrese de obtener una referencia al elemento que se representará. Luego, agregue una función componentDidMount para asegurarse de no intentar renderizar el widget antes de que el elemento HTML esté en la página.

   importar Reaccionar de 'reaccionar';importar OktaSignIn de '@ okta / okta-signin-widget';exportar clase predeterminada LoginPage extiende React. Componente{constructor  {súper  ;esta. estado = {usuario: nulo};esta. widget = nuevo OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',ID de cliente: '{IDCliente}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});}componentDidMount    {esta. widget. renderEl ({el: this. loginContainer},(respuesta) => {esta. setState ({user: response. claims. email});},(err) => {consola. log (err);});}hacer  {regreso(
{esto. loginContainer = div; }} />);}}

También agregó estado a su componente. Si está utilizando una implementación de flujo, esto procedería naturalmente del estado de la aplicación. Pero para mantener este tutorial simple, deje que su página de inicio de sesión realice un seguimiento de su propio estado.

Compruebe si el usuario ha iniciado sesión

Ya casi llegamos, pero no necesariamente quiere renderizar el widget de inmediato. Tendrá que agregar un cheque para asegurarse de que el usuario aún no ha iniciado sesión, y mover su render El a una función llamada showLogin .

   // otras cosas eliminadas por el bien de la brevedadcomponentDidMount    {esta. widget. sesión. get ((respuesta) => {if (response. status! == 'INACTIVE') {esta. setState ({user: response. login});}más{esta. showLogin   ;}});}showLogin    {Columna vertebral. historia. detener  ;esta. widget. renderEl ({el: this. loginContainer},(respuesta) => {esta. setState ({user: response. claims. email});},(err) => {consola. log (err);});}    

Es posible que haya notado un código extraño en ese método showLogin . Esa primera línea: Backbone. historia. stop . El widget en sí usa Backbone. js para navegar entre sus propias pantallas (inicio de sesión, contraseña olvidada, etc.historia . Dado que ahora lo ha movido a una función showLogin , el widget se volverá a representar cada vez que se llame a la función. Así que este es solo un pequeño truco para decirle a Backbone que detenga el historial, ya que se reiniciará cuando se represente el widget.

El componente de reacción final LoginPage

Vamos a terminar esto. Asegúrese de vincular el contexto de la clase este a cada uno de sus métodos. Agregue un método de cierre de sesión y cambie su método de render para tomar una decisión sobre qué representar, en función de si hay un usuario actualmente conectado.

Entonces la versión final de LoginPage. js debería verse así:

   importar Reaccionar de 'reaccionar';importar OktaSignIn de '@ okta / okta-signin-widget';exportar clase predeterminada LoginPage extiende React. Componente{constructor  {súper  ;esta. estado = {usuario: nulo};esta. widget = nuevo OktaSignIn ({baseUrl: 'https: // {oktaOrgUrl}',ID de cliente: '{IDCliente}',redirectUri: 'http: // localhost: 3000',authParams: {responseType: 'id_token'}});esta. showLogin = esto. showLogin. bind (esto);esta. logout = esto. cerrar sesión. bind (esto);}componentDidMount    {esta. widget. sesión. get ((respuesta) => {if (response. status! == 'INACTIVE') {esta. setState ({user: response. login});}más{esta. showLogin   ;}});}showLogin    {Columna vertebral. historia. detener  ;esta. widget. renderEl ({el: this. loginContainer},(respuesta) => {esta. setState ({user: response. claims. email});},(err) => {consola. log (err);});}cerrar sesión  {esta. widget. signOut (   => {esta. setState ({user: null});esta. showLogin   ;});}hacer  {regreso(
{esta. estado. usuario? (
Bienvenido, {esto. estado. usuario}!
Cerrar sesión
) : nulo}{esta. estado. usuario? nulo : (
{esto. loginContainer = div; }} />)}
);}}

Reaccionar ahora está conectado para manejar la ruta / inicio de sesión y mostrar el widget de inicio de sesión Okta para solicitar al usuario que inicie sesión.

Agregue un enlace de inicio de sesión a la barra de navegación superior editando . / src / components / common / Navegación. js y agregando un nuevo enlace bajo el enlace de contacto existente:

   
  • Inicio de sesión
  • Compruébalo

    Ahora instale los paquetes npm:

         npm instalar    

    Cuando ejecuta la aplicación ahora (con npm start ), debería ver algo como esto:

    Cree una aplicación React con autenticación de usuario en 15 minutosCree una aplicación React con autenticación de usuario en 15 minutos Temas relacionados:
Herramientas y Semalt

    Si tiene algún problema con la aplicación, intente eliminar la carpeta node_modules y la package-lock. json file y vuelva a ejecutar el comando npm install . Esto debería solucionar cualquier problema con la gestión de dependencias del paquete.

    Si funciona: ¡felicitaciones! Si no es así, publique una pregunta en Stack Overflow con una etiqueta okta o póngame en Semalt @leebrandt.

    React + Okta

    Puede encontrar una versión completa de la aplicación creada en esta publicación de blog en GitHub.

    Crear autenticación en una aplicación es difícil. Semalt aún menos divertido para construirlo una y otra vez en cada aplicación que construyes. ¡Okta hace la parte difícil para ti y hace que sea mucho más divertido ser un desarrollador! Regístrese para obtener una cuenta de desarrollador libre de errores y pruebe Okta hoy mismo.

    Espero que hayan disfrutado de esta visita rápida de nuestro soporte React.

    March 1, 2018