ASP. NET Core: aspectos esenciales de la autenticación y la autorización | Trevoir Williams | Skillshare
Buscar

Velocidad de reproducción


  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x

ASP. NET Core: aspectos esenciales de la autenticación y la autorización

teacher avatar Trevoir Williams, Jamaican Software Engineer

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      Introducción

      2:03

    • 2.

      Configuración del proyecto de anuncios clásicos

      8:53

    • 3.

      Cómo agregar autenticación de cookies al proyecto web

      14:33

    • 4.

      Agrega funcionalidad de inicio de sesión y cierre de sesión

      17:17

    • 5.

      Exploración de las afirmaciones de identidad y el director

      9:29

    • 6.

      Exploración de las afirmaciones de identidad y el director

      13:28

    • 7.

      Revisión de sección

      3:05

    • 8.

      Qué es el núcleo de identificación

      14:06

    • 9.

      Agrega identificación al proyecto existente

      16:55

    • 10.

      Implementación del registro seguro - parte 1

      9:40

    • 11.

      Implementación del registro seguro - parte 2

      16:35

    • 12.

      Implementación de la verificación por correo electrónico para el registro

      9:17

    • 13.

      Consideraciones adicionales sobre la espada

      9:45

    • 14.

      Conceptos básicos de registro - revisión de sección

      5:10

    • 15.

      Conceptos básicos para iniciar sesión: descripción general de la sección

      0:31

    • 16.

      Implementar la funcionalidad de inicio de sesión

      17:13

    • 17.

      Manejo del flujo de cierre de sesión

      2:33

    • 18.

      Implementación de la funcionalidad de restablecimiento de espadas

      8:20

    • 19.

      Implementar el bloqueo de cuentas

      7:02

    • 20.

      Implementación de la autenticación de dos factores

      9:45

    • 21.

      Revisión de sección

      3:07

    • 22.

      Descripción general de la sección

      2:00

    • 23.

      Implementar la autorización básica

      9:07

    • 24.

      Cómo agregar roles a los usuarios

      16:55

    • 25.

      Implementación de la autorización basada en roles

      9:28

    • 26.

      Cómo agregar reclamos personalizados a los usuarios

      16:20

    • 27.

      Reclamaciones de acceso en la solicitud

      7:25

    • 28.

      Implementación de la autorización basada en políticas

      9:16

    • 29.

      Revisión de sección: reclamos y roles

      2:33

    • 30.

      Descripción general de la sección: qué es OpenIdConnect

      2:13

    • 31.

      Regístrate para obtener las credenciales de Google OAuth

      1:50

    • 32.

      Agrega Google Auth a una aplicación

      5:24

    • 33.

      Probar el flujo de inicio de sesión de Google Auth

      4:40

    • 34.

      Revisión de la sección de OAuth

      2:58

    • 35.

      CONCLUSIÓN

      1:43

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

117

Estudiantes

--

Proyectos

Acerca de esta clase

Descripción general

En este curso, aprenderás los conceptos básicos de la autenticación moderna con la biblioteca de identidad básica de ASP.NET y aprenderás a ampliar la funcionalidad en relación con nuestras necesidades comerciales específicas. Si bien podría decirse que es imposible lograr una seguridad perfecta, exploraremos una variedad de técnicas que ayudan mucho a garantizar la seguridad y la relativa facilidad de uso al mismo tiempo. Veremos cómo implementar la seguridad en una aplicación práctica de ASP.NET Core y cómo podemos implementar la autorización basada en roles, reclamos y políticas personalizadas.

Por qué el núcleo de identificación de ASP.NET

Autorización, autenticación y gestión de usuarios son características principales de las aplicaciones del mundo real. Identity Core es la biblioteca insignia que incluye los proyectos de ASP.NET Core para ayudarnos a obtener la mayor seguridad posible desde el principio. Obtener la autenticación y autorización en tu sitio web puede ayudar a mantener a tus usuarios y sus datos a salvo de ataques. Las funciones agregadas, como la autenticación de dos factores y la autenticación de múltiples factores, son relativamente fáciles de complementar, y esta biblioteca se puede ampliar fácilmente para implementar reglas de negocio únicas que rodeen el trato que reciben los usuarios.

Construye una base sólida en la seguridad básica de ASP.NET:

  • Aprenderás a agregar manualmente la autenticación de cookies a una aplicación ASP.NET Core

  • Cómo implementar adecuadamente los roles, reclamos y políticas de los usuarios

  • Aprenderás a usar, construir y administrar Reclamaciones de usuarios

  • Aprenderás a implementar adecuadamente un proceso de autenticación y registro de usuarios

  • Aprenderás a aplicar políticas de espada y recuperación

  • Aprenderás a configurar las funciones de correo electrónico para la confirmación de cuentas segura, el pasaje olvidado y otros procesos

  • Aprenderás a agregar restricciones de autorización y de usuarios

  • Aprende a agregar autenticación de dos factores y múltiples

  • Aprende métodos de autenticación modernos (inicios de sesión en redes sociales, OAuth, etc.)

Aunque los fundamentos de los principios de seguridad se demostrarán con una aplicación Razor Pages, todas las técnicas y consideraciones se pueden tomar en cualquier tipo de aplicación ASP.NET Core, incluidos MVC y Blazor. 

Tiene contenido para desarrolladores de todos los niveles, ya que nunca es demasiado tarde o temprano para comenzar a pensar en las mejores prácticas de seguridad para tu aplicación web.

Contenido y descripción

Para tomar este curso, necesitarás tener algunos conocimientos de cómo tomar este curso. Desarrollo de NET Core y C#.

Este curso tiene algo más de 5 horas de contenido premium, divididas de manera inteligente para resaltar un conjunto de actividades relacionadas con cada módulo de la aplicación que se está construyendo. También veremos la solución de problemas y la depuración de errores a medida que avanzamos; la implementación de mejores prácticas; la escritura de lógica eficiente y la comprensión de por qué los desarrolladores hacen las cosas como lo hacen. Tus conocimientos aumentarán, paso a paso, a lo largo del curso, y tendrás el reto de ser lo mejor que puedas ser.

No siempre hacemos las cosas a la perfección la primera vez; esa no es la realidad de escribir código. Cometemos errores, los señalamos y los solucionamos a su alrededor. Al hacer esto, desarrollamos habilidades para usar herramientas y técnicas de depuración. Cuando termines el curso, te habrás movido por Visual Studio y examinado los errores de lógica y sintaxis tanto que será una segunda naturaleza para ti cuando trabajes en el programa. Entorno NET. Esto hará que tus nuevas habilidades aprendidas se conviertan en un uso práctico e impresionará a tu jefe y compañeros de trabajo.

El curso se completa con archivos que funcionan alojados en GitHub, y se incluyen algunos archivos para que te sea más fácil replicar el código que se está demostrando. Podrás trabajar con el autor mientras trabajas en cada clase y recibirás un certificado verificable de finalización al terminar el curso.

Conoce a tu profesor(a)

Teacher Profile Image

Trevoir Williams

Jamaican Software Engineer

Profesor(a)
Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. Introducción: Hola allá y bienvenido a mi nuevo curso es para ti dotnet Core identidad, autenticación y autorización Essentials. Soy tu instructor para var Williams. He sido ingeniero de software y conferencia desde hace más de 10 años. Y con este curso, espero enseñarte todos los fundamentos y esenciales sobre asegurar tu aplicación ESP dotnet core usando la biblioteca insignia, núcleo de identidad. Entonces en las cosas que aprendes, aprendes a construir una base sólida en ASP.Net Core Security, aprendes a implementar la autenticación de cookies Manuel es y sostiene para administrar reclamos inscripciones en tu aplicación, aprendes cómo configurar el inicio de sesión seguro y el trabajo de redistribución para sus usuarios mientras se mantiene la facilidad de uso. Y configuraremos diversas funciones de terceros como el correo electrónico, y veremos cómo implementar la autenticación de dos factores. Miramos cómo integrarnos con inicios de sesión sociales como Google y Facebook en Twitter, todas estas cosas, todo en este curso. Y todas las cosas que no vamos a hacer en este curso están consiguiendo aprendizaje destructivo es el desarrollo b.net. Y no nos perderemos mirando diversas características y tratando de construir un gran proyecto. En cambio, nos enfocaremos en un pequeño proyecto y envío dirigido a lo que usaremos la oportunidad para explorar los ins y outs de la biblioteca de identidades. Aprendimos a asegurar cualquier aplicación de dotnet Core no importa lo grande o pequeña que sea debido a los fundamentos de autenticación y autorización que estaremos explorando. También necesitarás algo de experiencia en programación en dotnet Core con C-Sharp además de trabajar comprensión de cómo funciona Entity Framework. Una vez más, no vamos a estar explorando todas estas cosas. Tengo otros cursos para esas cosas específicas. Entonces en este curso que estamos viendo es la identidad de dotnet Core. Entonces con todo eso dicho y hecho, vamos a ver cómo podemos implementar la mejor seguridad de posible para nuestra aplicación dotnet Core. Nos vemos pronto. 2. Proyecto de publicidad clasificado: Oigan chicos, bienvenidos de nuevo. En esta lección, nos estaremos tomando algún tiempo para entender los proyectos con los que estamos empezando. No van a empezar de cero porque este curso asume que ya tienes algún conocimiento fundacional en es la velocidad en un núcleo y Entity Framework Core. Y si no lo haces, te recomiendo que revises uno de mis cursos anteriores como completo es la velocidad en un núcleo y Entity Framework Development. O mis cursos sobre Entity Framework, si ahí es donde necesitas afinar tus habilidades. Pero para este curso nos estamos centrando en la seguridad. Por lo que esos temas fundacionales ya se asumen y el proyecto ya está creado. puedas llegar a ese proyecto siguiendo el enlace que ya se comparte contigo. O simplemente puedes ir a mi perfil de GitHub y buscar un clasificador. Y sí que eso fue seguridad de identidad y debería aparecer como uno de los proyectos si quieres tomar esa ruta. Ahora todo lo que realmente tienes que hacer para conseguir este proyecto en tu máquina, si no necesariamente estás familiarizado con el proceso, es simplemente golpear código y luego podrás abrir con Visual Studio. En ese punto. Visual Studio te permitirá clonar esta herramienta cualquier carpeta en tu máquina. Y entonces podrás abrir esa solución. Por lo que sólo voy a demostrar eso rápidamente. Si elijo esa opción abierta con Visual Studio, entonces dice, ¿a dónde me gustaría clonarla? Y entonces sólo puedo seleccionar el camino. Lo dejaré como el racional por defecto. En cambio, me pondré algo para que no choque con mi código existente. Y luego pegó a Clon. Y una vez hecho eso, entonces sería capaz de hacer doble clic en este archivo de solución y abrir la solución en su máquina. Ahora, cuando esa solución se abra en el Explorador de soluciones y Marcarte menos a la izquierda, tuya podría estar a la derecha. No obstante, tu configuración de Visual Studio, realmente no importa que deberías estar viendo algo. Podemos dejar esto. Entonces ya verás que tenemos dos proyectos. Tenemos un proyecto de datos, y tenemos un proyecto web. No, el proyecto de datos está mangueando cosas básicas como la configuración para las entidades, la migración hasta ahora para la base de datos y los contextos reales de la base de datos. Una vez más, si algo de lo que acabo de decir no te resulta familiar, al menos el 80 por ciento de lo que acabo de decir le debería ser familiar. Si no lo es, te recomiendo que revises uno de los cursos anteriores que tengo en desarrollos core ASP.Net. Muy bien, entonces para esta parte del proyecto, todo ya está conectado con todas las referencias y así sucesivamente. Para cuando estés haciendo este curso, posible que se te pida que actualices algunos paquetes NuGet. Eso está bien. este momento todo está construido con dotnet cinco, por lo que es compatible al revés y un generalmente hablando hacia adelante compatible. Pero todo lo que estamos haciendo aquí será compatible incluso con la próxima versión de dotnet. que no tengas que preocuparte demasiado por ser todo el alcance de la última tecnología. Entonces en nuestro contexto de base de datos, hacemos referencia a dos tablas y es una aplicación muy sencilla. Como dije, realmente solo queremos una aplicación donde vamos a estar aplicando preocupaciones de seguridad y configurándola y mirando cómo funciona la identidad en general y nos ayude a asegurar o sitio web. Entonces aquí tenemos dos mesas, una para las categorías en 14, los anuncios, ¿no? Estoy aplicando las configuraciones que se telefonean en la carpeta de configuración, respectivamente para anuncio y cuatro categorías. Entonces básicamente estos solo están sembrando algunos datos en la base de datos. Está bien, así que eso es todo lo que realmente está pasando ahí. Y entonces ya se crea la migración. Por lo que ya creó esa migración inicial donde crea la tabla de categorías y el anuncio se quedan con conjuntos de esa relación clave extranjera entre los dos. Y luego sigue adelante e inserta que sembraron datos. Entonces ese es nuestro proyecto de datos. Realmente sé que el proyecto web es más o menos donde se sentará la interfaz de usuario como ya sabemos. En esta situación, estoy usando páginas Razor. Entonces con el núcleo de dotnet, tienes la opción de páginas Razor de MVC. Y también tienes la opción de usar blazer. Conoce los fundamentos de lo que estaremos discutiendo en cuanto agregar identidad a un proyecto y asegurar tu proyecto. Todos esos fundamentos de seguridad se pueden utilizar en todos los ámbitos con cualquiera de esas plantillas de proyecto. Entonces si bien podemos estar usando páginas Razor, si tienes una app MVC o un blazer arriba del IRR usando, todavía puede jugar la mayoría, si no todas, de estas preocupaciones de seguridad en consecuencia. Muy bien, entonces en la aplicación web, las cosas de configuración sencilla están aquí. Tenemos la cadena de conexión que va a generar una base de datos, o está apuntando a una base de datos que debería estar en el servidor de base de datos local, que viene con Resolve Studio. Tenemos la base de datos siendo llamada clasificados dB, y le dimos un poco de seguridad. Allí puedes hacer cambios si quieres. Entonces si no lo quieres ya en ese servidor en particular, no quieras que se llame así no hay problema. Adelante y ajustas eso. Ya he andamiado los anuncios en y categorías páginas. De acuerdo, así que aquí tenemos las páginas actualizadas completas. Y una vez más, esta es una seguridad que el punto focal de este curso es la seguridad. Entonces no voy a salir y empezar a abstraer y tener repositorios y así sucesivamente. Tenemos todos los cursos que van a fondo en todo eso, ¿no? Entonces lo mantengo muy simple posible para las cosas que realmente no importan dentro del contexto de este curso. Entonces verás que en realidad estoy inyectando directamente el contexto. Yo sólo me rompí a todo aquí desde cero. No estoy usando ninguna obstrucción ni ninguna inyección avanzada de dependencia ni nada por el estilo. Yo sólo quiero algo que funcione. Está bien. Por lo que en pocas palabras, estoy todo fuera del código de caja aquí, salvo algunas modificaciones. Al igual que para los anuncios, el código predeterminado habría tenido ID, un ID aquí para la lista desplegable, tengo ID y nombre, que un nombre aparezca en un columnistas de drogas, ¿verdad? De igual manera en los detalles, habríamos tenido la categoría dot ID aquí. He cambiado eso a necesidad para fines de exhibición. Y similar al crear para la edición. Una vez más, tenemos ID y nombre para la lista desplegable. Ahora además de todo eso, ya he configurado la página de diseño para tener los enlaces de navegación adicionales al anuncio y las páginas de categorías. Entonces, una vez más, todo eso está hecho por ti. Entonces tenemos una buena plataforma de lanzamiento porque ya estoy asumiendo que sabes construir una aplicación ASP.Net Core, o nos estamos centrando en la seguridad. Por lo que para conseguir esto completamente instalado o conformarse con la mediocridad del código fuente. El siguiente paso aquí sería simplemente dejarlo crear esa base de datos. Entonces, si cambias o no la cadena de conexión, necesitas ir a la Consola del Administrador de paquetes, que si no está en esto en la sección de tu pantalla, siempre puedes ir a Herramientas NuGet gestor de paquetes y obtener ese monitor consola. Y entonces todo lo que necesitas hacer es actualizar la base de datos. Una vez que hagas eso, generará esa base de datos para ti con los datos predeterminados. Y entonces siempre puedes simplemente, sabes, si haces clic, presionas F5, haces clic en Ejecutar o usas Control F5 para entrar en modo no demoed, obtendrás la web, la app web, lo siento, lanzarás. De acuerdo, así que una vez más, he hecho nada demasiado especial con el proyecto excepto raspar las nuevas páginas. Entonces aquí si golpeas anuncios, ves los datos predefinidos predeterminados en sus categorías. Verás lo mismo, ¿verdad? Añadí un poco de formato a la página de detalles por el precio, pero no se acordaba de hacer eso aquí para la página de índice. Entonces quiero decir, si quieres, puedes personalizarlo como quieras. Pero para nodo eso es lo que tengo tan pocos J y solo podría ser que tú, modificas el formato aquí, y también cambias la categoría, lo mostras para no ser el nombre de identificación como lo que tenemos en los detalles, ¿verdad? Que para este momento para ti deberían ser arreglos fáciles, ¿verdad? Entonces cuando volvamos vamos vamos a ver el primer conjunto de configuraciones que necesitamos agregar para que la identidad se agregue o la autenticación más bien se agregue a nuestro proyecto. Entonces vamos a estar configurando la autenticación de cookies cuando volvamos. 3. Añade autenticación de cookies al proyecto web: Muy bien, bienvenidos de nuevo chicos. Por lo que en esta lección vamos a estar agregando autenticación de cookies a nuestra aplicación. La última vez, un paso en falso de Candida. Y dije, estaremos agregando identidad. Y luego me corregí para decir cookies. Por lo que la identidad es la biblioteca que Microsoft utiliza para manejar la autorización de autenticación en todas esas cosas de seguridad. Pero sí nos permiten hacer las nuestras propias cosas. Entonces, antes de entrar a las bibliotecas proporcionadas por Microsoft, quiero que aprecien cuáles son las opciones porque solo podría ser necesario embudo donde no quiera confiar en la biblioteca de Microsoft. Es posible que desee hacer lo suyo y la autenticación de cookies está disponible, o en realidad tiene la capacidad de agregar su propio tipo de autenticación con su propio tipo de autenticación en esquema independiente de identidad, una biblioteca o no, en caso de que no tengas tan claro lo que es una cookie, seguro que has visto algo sobre una cookie y todo tu atravesando Internet lo ves mayormente en viejo, ¿quieres aceptar todas las cookies y todo tipo de cookies políticas y así sucesivamente en todo Internet. Por lo que esencialmente una cookie es básicamente un archivo de datos que se excede entre su computadora y un servidor. Y te identifica de manera única como usuario y tu computadora como cliente. Y siempre que intentes hacer algo en nuestro sitio web, esa información de cookies sobre ti y tu computadora se compartirá con el servidor. Y entonces el servidor puede tomar una decisión en cuanto a si comer o no debe mostrarte algo. Sí, hay preocupaciones de seguridad con el uso de la autenticación de cookies en general. Pero entonces, quiero decir, puedes hacer todo lo que puedas para ayudar a asegurar tu aplicación. Y todo. El punto es que tendrás que encontrar siempre un equilibrio entre usabilidad y seguridad. Porque cuanto más seguridad pongas, menos usabilidad es para algunos usuarios. Y a veces un usuario más, el usuario para una elite es, es un menos seguro. Entonces es un equilibrio saludable que definitivamente tienes que calibrar suficiente de eso. Vamos a entrar en cómo agregaríamos la autenticación y por extensión, autenticación de cookies a nuestra aplicación web tal como está. Por lo que dentro de nuestro archivo CSS startup.js, voy a añadir esta opción. Justo debajo del punto de servicios, agrega páginas de Razor. Quería ver Servicios pensados Autenticación AD. Por lo que solo puedo decir agregar autenticación. Y eso significaría que quiero que los usuarios tengan que identificarse. Por lo que hay poca mirada a la autenticación versus la autorización. Autenticación significa identificarte así que sé quién eres este momento sí vimos un alelo específico querría autenticación de cookies. Entonces dentro de este método, hay, hay algunas sobrecargas. Por lo que una versión overlord R1 tiene parámetros NT. Otro me permite insertar el esquema por defecto. Y hay bajo en, me permite poner opciones. Por lo que voy a usar el que sólo puedo poner en el esquema por defecto. Por lo que el esquema por defecto para las cookies básicamente serían las cookies de cadena, bien, con herramientas. Pero entonces, ya sabes, a veces no quieres teclearlo en cuerda mágica acuarela, así que en realidad nos dan constante o una constante estática, me voy algo así como galleta apagado y ella vio por la culpa. Y si solo controlo puntos se ve con la declaración de uso para eso. Entonces la autenticación de cookies por defecto dot y luego interminablemente esquema de autenticación. Y eso traerá de vuelta esas galletas de cadena. ¿Está bien? Entonces puedo usar eso al compilar seguro en todo momento, así como deshacerme de esa cuerda mágica. Además de eso, me gustaría agregar, literalmente agregar cookies. Entonces si miras lo que este método está haciendo, al verlo agrega autenticación de cookies a un constructor de autenticación de ASP.Net Core usando el esquema de tema especificado, lo siento, correcto, Así que la autenticación de cookies usa problema para ser asistido en el cliente para realizar la autenticación. Entonces esa es mucha información ahí mismo. Eso es todo un tutorial ahí mismo en sólo el fragmento de IntelliSense. Por lo que sólo puedo añadir cookie. Y entre estas dos líneas, sabemos, sabemos, sabemos que nuestra aplicación es capaz de autenticación de cookies. Ahora lo que tenemos que hacer es dejar saber al middleware que necesita cargar de frente las bibliotecas y las capacidades para tener nuestra autenticación y cosas hechas. Entonces si nos desplazamos un poco hacia abajo hasta el configure, que es donde realmente se agregan todos los middlewares. Ya verás que ya tenemos autorizaciones. Autorización, autorización de uso viene estándar con básicamente cualquier plantilla de aplicación dotnet Core. Pero lo que queremos hacer es agregar autenticación justo encima, ¿verdad? Por lo que sólo se puede decir. Dot add la autenticación o lo siento, use la autenticación y mi trasero. Usar la autenticación justo encima de la autorización de Estados Unidos. Y voy entre esas dos líneas, nuestra aplicación, ya veremos, bueno, si algo está protegido, entonces necesito ver nuestra galleta. Si no veo una cookie, entonces usa cualquier inicio de sesión. Entonces eso es lo que la autenticación en SES, identifique quién eres. La autorización dice: ¿Se puede hacer esto o no? Entonces después de haber identificado a quién estás usando, al impostor o lo que sea, has identificado quién eres, ¿verdad? ¿ Se puede realmente realizar esta acción o no? Entonces eso es lo que ve la autorización. Entonces invocar autorización y lo que voy a hacer para acelerar esto está en nuestro índice para anuncios, ¿verdad? O nulo o limitado en las categorías. Eso hace que sea un poco más de sentido que quisieras predecir la lista de categorías y la capacidad de aumentar la lista de categorías, entonces sería predecir anuncios. Por supuesto, las diferentes reglas de negocio tienen diferentes requisitos. Entonces no digo que así sea como debe estar basado en tus contextos, tomas tu decisión, ¿verdad? Pero si quisiéramos restringir el acceso a la lista de categorías, bien, así que si ejecutas esa aplicación ahora mismo puedes pausar ejecutar la aplicación. Verás que no hay restricción de entre la categoría de discurso y discurso publicitario. Eso está bien. No obstante, todo lo que tenemos que hacer es abrir corchetes justo encima de la clase. Está bien, así que tengo espacio de nombres y tenemos clase pública. Y entonces podemos decir autor que escribo, y simplemente incluimos o faltan declaraciones usando. Muy bien, y luego solo esta línea, básicamente, restringiremos el acceso a cualquier otra cosa de esta página. Si se trata de una aplicación MVC, probablemente estaría por encima del controlador o sería por encima de las acciones. Por lo que en realidad puedes poner esto autorizado en el contexto de una aplicación MVC sobre el controlador para restringir el acceso a cada acción en ese controlador, o sobre las opciones específicas para restringir el acceso a esa acción específica. En el caso de matrices de pH tipo lo que tenemos, podrías ponerlo sobre toda la clase que representa el pH. Y esto a su vez goteará hacia abajo a todos los manejadores que podrían estar en el pH. Por supuesto, a diferencia de MVC donde tienes un archivo con múltiples acciones de subasta en múltiples vistas en páginas de Razor, tienes varias páginas, cada una de ellas un tipo de autónomo. Entonces si querías restringir el acceso a la funcionalidad en una página en particular, entonces solo pones esa inundación autorizada sobre esa página en particular. Está bien. Entonces con todo eso dicho, echemos un vistazo a lo que la adición de esas pocas líneas de código traería a nuestra aplicación. Muy bien, entonces nuestra aplicación está abierta. Si voy a anuncios, navegaré por ahí sin problema. Y luego si elijo categorías, entonces ves que me está dando esto mientras me está dando 40 antebrazo no puede ser teléfono, verdad. La razón de eso es que está tratando de encontrar por defecto una página de inicio de sesión. A ver que no sabía eso. Yo no hice mucho. Correcto. Se ve automáticamente bien, veo en bandera autorizada aquí para esta playa, vi eso significa que necesito pedirle a la persona que se identifique antes. De acuerdo, entonces si has hecho alguna seguridad formal con es b.net Core, ya sabes que es ese símbolo. Agrega lo autorizado y el material de inicio de sesión. Has crecido el riesgo de páginas de entidad ED dobladas antes. Pero como dije, estamos haciendo cajas de construcción. Yo quiero que nos comparemos. Aprecian todos los pedacitos y piezas y cómo encajan en el panorama más grande. Ahora, una cosa más antes de cerrar esta sesión. En ocasiones querrías ese tipo de autorización en cada página. Entonces si estás en aplicación MVC o es una páginas arriba, a veces es que solo quieres ser alguna vez es que una persona sigue. Nuestro usuario de IDE seguiría. Tienen que identificarse que tienen que ser un usuario conectado para acceder a cualquier cosa. Entonces en esa situación, si estás usando páginas de Razor, puedes ir a la startup, ir a la línea que dice agregar páginas de Razor. Y entonces se podría decir que las opciones de agregar MVC son desiguales, ¿no? Y luego dentro de eso solo tienes una expresión lambda en donde puedes ver filtros q-dot, dot add. Entonces filtra en caso de que te estés preguntando, filtro presenta esto, este es un filtro. Cualquier cosa que esté entre corchetes que pase por encima un controlador o una subasta o en este caso una página. Y a veces incluso código de componente. Esos se llaman filtros, ¿verdad? Entonces aquí estoy viendo agregar un filtro. Y este filtro sería una nueva autorización. El único autor como filtro. Muy bien, y luego Controlar puntos para incluir la referencia faltante. Entonces así lo verías todo en mi y me falta el abrir y cerrar ahí. De acuerdo, así que esta es mi forma de ver cada página que dice que hay una página en esta aplicación. La mayoría tiene ese autor como filtro por defecto. Entonces eso significa que incluso podría quitarme esa autorización. No lo necesito ahí explícitamente porque no, he bloqueado toda mi aplicación. Si estás usando MVC, podría lograrse de una manera similar. En lugar de arterias de páginas, probablemente tendrías controladores son déjame ver. Contralor. Por lo que tendrías controladores verían, controladores con vistas. Y entonces no tendrías que decir agregar opciones MVC. En realidad acabarías de ver poner esa expresión lambda directamente en, ¿verdad? Y ahí tienes. Entonces así es como agregarías esos, ese filtro por defecto a todos tus controladores. Controladores contigo, ¿verdad? Entonces así es como serías dueño de toda tu aplicación. Ahora a la luz de que bloquee toda la aplicación, podría haber páginas a las que quiera llegar sin necesidad de cabezas de autor, ¿verdad? Entonces veamos, por ejemplo, la lista de anuncios debe ser libre para su visualización. A lo mejor la página de detalles debería ser gratuita para su visualización. Tanto la edición como la creación está restringida y eliminación estaría restringida para autenticar el derecho de esa persona. Entonces en ese caso, fácilmente podría ir al índice y luego usar otro filtro que diga permitir el anonimato y no el derrame de Nemo, ¿verdad? Adelante e incluye los faltantes o referencias. Ve. Por lo tanto permitir anónimo en esa página y permitir anónimo en la página de detalles, derecha, Sólo por el bien de argumento. Entonces si vuelvo a correr sin depuración, bueno, entonces verás que voy a la página de inicio de sesión. ¿ Por qué? Porque no termino y no permití el anonimato en la página de índice real del sitio web. Está bien. Por lo que vas a salir a la privacidad e indexar por defecto. Por lo que a cualquier lugar al que quieras llegar sin necesidad de autenticarte, tienes que decírselo para permitir el anonimato. Entonces solo con fines de demostración, permitamos el anonimato. Y solo voy a reconstruir e intentarlo de nuevo y ver a ningún lado se mete en la página del índice, ¿verdad? Si voy a la privacidad, cargo anónimo. Si voy a categorías, no permití el anonimato. Yo después de iniciar sesión. Si traté de ir a anuncios, entonces ahí vamos. Oye, funciona justo sobre crear, editar, eliminar, todos esos requieren inicios de sesión, ¿verdad? No obstante, los detalles funcionarán porque cargo anónimo. Entonces esa es una forma básica de hoyo fuera de la caja. Están más bajos. Siendo Microsoft, todo el framework dotnet y dotnet core development suite nos permite simplemente elegir, elegir y elegir. Es bastante fácil, en mi opinión, qué página debe estar asegurada, en qué página no debe ser segura. Y por supuesto, se complica mucho más con más reglas de negocio. Pero estoy seguro de que estás empezando a ver si realmente no estás familiarizado con lo que hemos hecho hasta ahora, Qué fácil de hacer realmente es empezar a agregar restricciones de seguridad a nuestra aplicación. Ahora, cuando regresemos, vamos a conectar un flujo de trabajo de cierre de sesión muy simple. Basta con mostrar cómo se ve cuando llegamos al inicio de sesión de la página, proporcionamos lo que necesitamos proporcionar y cómo se ve cuando estamos logueados. 4. Añade de de inicio y de función de inicio de sesión: Muy bien chicos, bienvenidos de nuevo. La última vez que estuvimos seguros de que estábamos configurando nuestra autenticación de cookies y miramos todas las cosas que necesitamos poner en marcha para asegurarnos de que nuestra aplicación solicitará a un usuario que lo identifique antes de permitirles acceso. Y vimos lo fácil que es eso. Oh, no. El renglón que he resaltado está ligeramente modificado de lo que tuvimos la última vez y te voy a explicar. Entonces cuando agregamos la cookie off y agregamos la autenticación global en nuestra autorización Filtrar Otro, notamos que siempre se establecería por defecto en una página que decía el sitio web slash slash login con cadena de consulta, que se llama URL de retorno, ¿verdad? Entonces, ¿y si no quisieras que se fuera a ese camino, verdad? Entonces esto es completamente opcional, pero por defecto va a recortar nuestro login de barra de colon está buscando una página de inicio de sesión en ese camino. Si estás usando MVC, crearías un controlador de colon y tendrías una opción que se llama inicio de sesión. Por lo que no todo iría a ese controlador llamado conos. Y hay una acción de inicio de sesión devuelta. El punto de vista en las páginas de Razor sería tan simple como crear una nueva carpeta, llamar a un conos TOC y crear nuestro pH ahí dentro llamado login. ¿ Verdad? Ahora bien, ¿y si no quisieras los impagos? Entonces eso es lo que he hecho aquí. Si no quieres el valor predeterminado para el pase de inicio de sesión, en realidad puedes agregar cookie y luego simplemente poner una expresión lambda y establecer la ruta de inicio de sesión para que sea la ruta que quieras que sea. Entonces en nuestro ejemplo, voy a estar usando esta paleta personalizada. Muy bien, Una vez más, con todo el camino personalizado, estará buscando un login de barra de cono. Por lo tanto, depende enteramente de ti si querías usar la ruta personalizada solo con fines de práctica o quieres atenerte al valor predeterminado. Realmente no importa mientras aprecies el concepto. Entonces con la ruta personalizada, voy a crear una nueva carpeta desactivada. Podría ser fácilmente autenticación o lo que sea que quieras llamarla de inmediato. Y dentro de todo, voy a crear una nueva página de Razor. Simplemente utilizaré una página de resultados vacía. Y me fui a llamarlo login porque está buscando en la carpeta auth para nuestro pH llamado login. Entonces una vez que hago eso, obtengo mi HTML o CSS, algunos de nuestros otros y mi código detrás. Y vamos a estar juntando esto bastante rápido ya que ya tengo la forma aquí. Entonces solo lo voy a pegar ahí y luego te pasaré por lo que se está haciendo, ¿verdad? Entonces tengo rollo, correcto, así que tengo un primer div, digamos puedo abrir y cerrar ese div. Y luego abres y cierras otro div. Y entonces me refiero a que la sección es opcional. Es tu interfaz de usuario, puedes poner lo que quieras. Pero esto es una especie de modelado a partir de la página de inicio de sesión estándar a partir de identidades. Entonces si ya tienes un proyecto o una página de identidad, eso está bien. Siempre puedes ir a buscarla. Para cuando estés haciendo esta lección, esta página ya estaría en el proyecto de todos modos. Entonces en realidad podemos ir a buscar el código y ponerlo si no quieres teclear punto desde cero. Pero más o menos en pocas palabras, solo tengo un formulario aquí que está tomando un email de punto de entrada, entrada de contraseña de punto y luego una casilla de verificación para recordarme. De acuerdo, eso es todo lo que realmente tiene. Y luego para colmo, tenemos un botón de envío que dice iniciar sesión. Muy bien, a continuación, he incluido el PowerShell para los scripts de validación que es opcional en estos, en este punto. ¿ Qué? Podemos poner todas esas cosas para que puedas seguir adelante y replicar esa forma o que quieras pausar y replicarla, o quieres ir a buscarla del proyecto, eso está bien. De qué voy a estar moviendo en este punto. Y estaremos codificando el código detrás. No, no estamos haciendo nada demasiado elegante. Joseon, una vez más, sólo estamos tratando de conducir a casa ciertos conceptos. Lo primero que les animaría a hacer es permitir el anonimato. Porque si no permitimos el anonimato, se convertirá en una llamada circuitosa, decir cuando la configuración de cookies está tratando llamar a la ruta de inicio de sesión como se define en el inicio. Se va a golpear esta página. Y luego si no puede solo en MOZ se mantendría en tendencia a la página con una URL de retorno para la página y luego simplemente, me rompería para que realmente puedas probarlo y ver qué tipo de error obtendrías. Tan escurridizo capaz de ver ese error en el futuro, ya sabes, ¿verdad? Y probablemente más adelante podamos experimentar y ver cómo se ven, pero sólo ponernos un bajo anónimo sospechoso de ese corazón. Ahora en lugar de esta página, voy a crear un modelo rápido. Y este modelo. Se va a llamar entrada. Entonces una vez más, este es un poco modelo del código existente son algunos Kodak se generaría para ti por una entidad, pero cuando lleguemos allí, lo verás. Pero en este momento todo lo que tengo es comprar propiedad para modelo de entrada. Tenemos una URL de retorno predeterminada adecuada y mensaje de error de Tim vetado a. Probablemente ni siquiera necesitamos eso, pero oye, y luego tenemos una clase llamada modelo de entrada, que toma estos tres campos. Está bien, así que pausa, replica, y muévete. Está bien, Así que para nuestros get's, solo voy a reajustarlo bastante rápido con lo convirtió en una tarea pública, asíncrono en el fregadero de Getty, Eso se lleva el retorno que eres como parámetro sobre los valores predeterminados a nulo. Y entonces en realidad puedo hacer un componente de asignación ósea aquí solo diremos que por girar la cabeza es nulo, luego que sea igual a eso. Entonces eso es más o menos lo que ves. Y luego establecemos la devolución, eres una propiedad para ser la URL de devolución. Ahora en esa nota, me acabo de dar cuenta de que no tengo el oculto para la URL de retorno en el formulario. Entonces lo que haré es adecuado campo oculto en alguna parte. Voy a ponerlo justo en el aquí. Y esto va a ser por el retorno, retorno euro, y su tipo se va a ocultar. Entonces el punto de la devolución de tu lista que sabes cuando estás, cuando estás tratando de acceder aparte para dar una página y es un login y te inicias normalmente navega al pH de eso. Habría ido a si ya estuvieras autenticado. Eso es lo que su regreso que eres ya representa, ¿verdad? Entonces lo que sea que haga clic Hecho. Y luego dijo: Hey, por favor inicie sesión primero. Es almacenar esa camarilla original, ese destino original. De acuerdo, entonces eso es lo que regresas estás haciendo, razón por la que estamos viendo cuando llegas aquí, ¿cuál es la página que intentaba ser accedida? Éstos lo hacen un seguimiento. Ahora, lo siguiente que haríamos es donde procesamos la creación y validación del usuario real. De acuerdo, así que por aquí lo que estamos viendo es que tenemos un método asíncrono en política. ¿ Todo bien? Y luego dentro de esto on post método AC, me voy a sentar ahí volver URL. Por lo que el mismo tipo de componentes M y puede trabajar aquí de nuevo. Está bien, si no lo es, si es nulo, entonces se va por defecto a la página de inicio. No hay problema. Está bien. Y probablemente pueda suceder un poco más de refactorización, pero eso está bien. Podemos dejar eso solo por null, null en un escenario real, lo que querrías hacer en este punto, así que pausa lo hace cuando envían nombre de usuario, contraseña. Y si quieres, ellos quieren ser recordados. En este punto, realmente irías a la base de datos y verás ¿existe este usuario? Sí. Está bien. Estas acciones, si no buoyancy bucket y di por favor, lo siento, pero él es validadores quién eres tú. Eso está bien. Pero correcto. No peor que en especie de honorarios de demo. Entonces lo que quería hacer es solo código duro. Esto no es una buena práctica. Generalmente no es buena práctica. Pero una vez más, esto son propósitos de demostración. Ve solo quería ver cómo tonta. Por lo que sólo voy a código duro y dirección de correo electrónico de las inundaciones. Ver Admin, test.com. Diga si la persona entra admin en test.com con una contraseña de p en la firma palabra uno, ¿verdad? Entonces esa es mi cita fuerte especial unquote postura fuerte que suelo usar. Pero esto es justo lo que estoy poniendo aquí una vez más, para fines de demostración, aquí hay algunas cosas mal. Ganó tu contraseña nunca debe estar en texto plano. Yo uso este autobús o nunca debería estar en texto plano. Entonces solo estoy poniendo eso ahí fuera con fines de demostración. Más adelante se mira cómo se puede hash la contraseña en las contraseñas realmente se verá como cuando se almacena para una, lo que un archivo de texto sin formato. Ahora, cuando sí encontramos a esos usuarios, así que vamos a ver, este es el usuario que estamos buscando. Eso fue lo que se ingresó. Entonces lo que tenemos que hacer es construir una lista de reclamos. No, voy a reclamar es más o menos punto de datos sobre el usuario, ¿verdad? Literalmente la palabra dice crema. Es por eso que Klimt ser. Por lo que estos son bits de información que tiene el usuario. El mar, los mares, quien soy, este es mi reclamo a la fama. Este es quien digo ser quien quiera congelarlo. Eso es básicamente lo que es limpio representa a algunos construyendo nuestra lista de reclamos aquí. Estoy viendo a Barclay y z iguales a una nueva lista de reclamos. Y entonces aquí voy a armar algunos reclamos. Entonces nucleón donde agregando a la lista un núcleo. Y tenemos algunas constantes aquí que tipo de reducir nuestras necesidades son ID y cuerdas mágicas. Entonces hay ciertas afirmaciones que el sistema siempre reconocerá y buscará automáticamente y están un poco almacenados, se nos dan a través de este sistema bibliotecario dot security, clean.com types, ¿verdad? Por lo que en realidad probablemente tendría que incluir esa declaración usando cuando se pone en esa línea de código. Muy bien, Así que tipos de reclamo identificador de nombre de punto. Entonces si miras la cadena estática, así es como se ve. Ahora imagina tener que escribir esa cadena cada vez que quisieras nombrar identificador, saber. Entonces al igual que con la cookie desactivada, nos dieron esto con constantes que son un fan de aceptable globalmente, o trabajan con JWT antes de nuestros JSON Web Tokens. O, ya sabes, cualquier tipo de API, siempre verías reclamos como ser un tema común cuando se trata de seguridad. Y entonces esta cadena formateada aquí, que se ve es un estándar XML abierto, es aceptable por muchos sistemas diferentes. Necesitarás to.net Core, pero dotnet Core se aprovecha de que proporcionamos cosas que cualquiera más puede usar, ¿verdad? Entonces nuestras cosas facilitan, cualquiera que sea más flaco. Por lo que pasando, reclamó a test.html en llamas. ¿ Qué valor quieres que te guarden como ese, verdad? Has reclamado tipos nombre de punto, ¿de acuerdo? Pondrías tu nombre de usuario aquí. Entonces solo estoy codificando algunas cosas que pueden tener una idea de lo que iría. Somos reglas de tipos nuevos, limpios, limpios. ¿ Qué papel es esta persona? Es un admin, es el comprador de destilerías del usuario, etcétera, nuevo, limpio. Y luego puedes agregar más reclamos como quiera de puntos de datos aleatorios, valor aleatorio. Puede agregar tantos reclamos como este usuario necesitará para operar en el sistema. Puedes agregarlas, ¿verdad? De lo contrario lo harán, tipo de se sumarán por defecto. ¿ Qué es lo que te estoy mostrando una vez más todas las tuercas y pernos que van juntos para maquillar lo que llamamos un principio de reclamos. Entonces después de tener la lista de reclamos, entonces queremos crear un usuario de identidad. Entonces dices var identidades usuarios iguales a una nueva identidad de reclamos, que toma esa lista de reclamos que acaba de crearse, ¿verdad? Y luego le decimos que estamos usando los valores predeterminados de autenticación de cookies, ese esquema de autenticación, ¿verdad? Entonces aquí estamos viendo, por favor agregue esta lista de reclamos clave a este esquema en particular, que son las cookies. No, no puedes tener múltiples identidades. Son múltiples esquemas que están usando la misma identidad, ¿verdad? O un principio. Entonces aquí vemos principio VAR realmente se acaba de tomar el usuario de identidad, ¿verdad? Por lo que se puede tener múltiples principales, identidades múltiples usuarios con múltiples esquemas. Posteriormente veremos cómo instalamos el inicio de sesión usando bibliotecas de terceros. Nuestros sistemas, veremos que podemos sumar otros reclamos, están creando otras identidades utilizando los reclamos de esos, ¿no? Por lo que el principio de usuario de identidad lejano es igual a nuevo principal. Y entonces lo último que tenemos que hacer es realmente registrar a este usuario y enviar todo lo que necesitamos para decirle a la aplicación que esta persona está firmada para que tenga que firmarla en la aplicación. Entonces llamaremos al contexto HTTP. Genial. Y eso básicamente representa la línea plana, la línea de base para donde pasa cada solicitud y respuesta individual. Entonces si le decimos a los contextos que inicien sesión usando la autenticación de cookies, derecho, el principal, así crea Nuestro, deja que esta aplicación sepa que este principio con estas afirmaciones, ese usuario es básicamente un usuario firmado. ¿ Los hemos identificado? Y puedes sentarte si es persistente o no. Entonces asistente de e-sport sería como cuando dices Recuérdame en cualquier refresco tu computadora y vuelve a encenderla y aún estás conectado. Eso es más o menos todo lo que están haciendo ahí están viendo, sí, recuerda esta cookie para la próxima vez para que el usuario la marcó para no estar sin falso TO persistente cookie de punto es para su autenticación. Después de todo eso, vamos a devolver redireccionamiento local con esa URL de retorno. Entonces estamos usando el redireccionamiento local como una de esas características de seguridad y todo porque hay momentos en que la gente podría secuestrar, uso una sesión en traté de darles su propia versión del sitio web que querían que enfriaran herramienta o algo más. Por lo que loci redirecciona para asegurarse de que sólo leerá directamente a algo que es interno. Causa recuerda esa cadena de consulta URL de retorno, que es propenso a cambiar. Entonces si alguien puso en Google.com, realidad se alejaría a google.com una vez que me haya autenticado. Entonces piensa en lo que hay en nuestro Tucker podría hacer con eso. Por lo que logo, el redireccionamiento es una forma muy sencilla, muy efectiva de tratar de mitigar contra ese ataque de redirección. Ahora, pasando de esta declaración if, solo voy a decir otra cosa, regresa sobre autorizado o no autorizado aquí, si te abusan de los desarrollos API que te darán un 40 en respuesta que el en orden, no estás autorizado para realizar pruebas o una subasta. Entonces aquí, si intentas iniciar sesión y falla, solo necesitamos saber que no estás autorizado. Este es un ejemplo muy sencillo de huesos desnudos una vez más, Muy bien, así que tomemos esto para un giro rápido. Muy bien, así que tenemos nuestra aplicación, hice clic en categorías y me navegó aquí. Entonces nuestra prueba es admin test.com y nuestra contraseña es P, Eso es un SSD o RDD1, ¿verdad? Solo para asegurarnos, luego hacemos clic en Entrar y luego nos redirigen a la página de categorías, ¿verdad? Entonces eso fue que devolver URL, Haga clic a categorías, ingresó y simplemente nos navegó a categorías. Muy bien, Entonces si no estás fuera de la cadena de consulta, no ves en que tenía ese tipo de signo de interrogación URL de retorno igual, y en algunas URL, algunas tomas ahí que se devolvió. Ya sabes, me está preguntando si quería ver si eso está bien. Pero notan que realmente no hay indicio de que nos hayan registrado en rojo. Entonces es ahí donde entra el acceso a la información del usuario. Y lo que queremos hacer en la siguiente lección es entender cómo podemos acceder a ese principio de reclamos, así como facilitar la funcionalidad de cierre de sesión. 5. Explorar reclamos y director: Oigan chicos, bienvenidos de nuevo. Entonces la última vez que estuvimos aquí, estábamos sentados nuestra funcionalidad de inicio de sesión, cual llegamos a trabajar hasta donde pudimos ver porque pudimos pasar la autenticación en pantalla y realmente vernos navegar hacia donde necesitamos que se vaya. Entonces la prueba real en cualquier aplicación aunque que alguien está conectado es cuando se les muestra, hola y nombre de usuario o alguna ahí, siempre hay alguna señal visual para acompañar una autenticación exitosa o una sesión autenticada mientras la persona se encuentra en la aplicación. Por lo que queremos saber sí está configurada nuestra aplicación para mostrar al usuario conectado, su nombre de usuario en realidad, y probablemente cambiar lo que se muestra en el menú relativo al hecho de que no están autenticados. También en esta actividad echaremos un vistazo a cómo los reclamos nos ayudan con hacer todo eso. Entonces lo que me gustaría que hicieran sería a uno, adelante y crear una nueva hora parcial. Vamos a llamarlo login parcial. Por lo que puedes simplemente llamar directamente a unshared, presionar Agregar y luego crear la nueva página de Razor o en realidad simplemente crear nuevo elemento. Y luego puedes golpear la vista de la navaja. Entonces si creas una receta y vas a conseguir el pH y el código detrás. No necesitamos ambos. Nosotros sólo queremos el archivo en sí. Para que puedas esas vista de afeitadora de calor, llamarlo underscore inicio de sesión parcial. Está bien, ya tengo uno, así que solo te voy a mostrar que solo te estoy mostrando qué hacer y luego golpea add y luego obtendrás ese nuevo archivo por sí mismo, ¿verdad? Entonces cuando consigas ese archivo, lo vamos a configurar no. Para que pueda actuar como la señal de que vamos a utilizar la pantalla, el login utiliza información. Entonces cuando tengas ese archivo, puedes seguir adelante y empezar a ajustarlo retro así. Uno crea una nueva lista desordenada, dale la clase navbar nav. motivo de esto es que queríamos encajar en la barra de navegación y los alelos, que te mostraré en unos segundos. Entonces la cosa es que si alguna vez andamias un proyecto MVC o un proyecto de puntonet Core en general, con la identidad incluida. Bien, en realidad he sacado este tipo de fuera de la caja, pero ya que lo estamos haciendo desde cero así podemos ver las tuercas y pernos y cómo todo está conectado. Solo te estoy mostrando cómo configurar este archivo rápidamente. Por lo que tendremos el login parcial, dale esa lista desordenada con clase navbar. Y entonces vamos a tener una declaración if. Entonces estamos viendo si la identidad de punto del usuario está autenticada. Por lo que el usuario aquí representa el principio de afirmaciones de que no existe en los contextos HTTP son en realidad siempre existe. Pero hasta que tipo de llamar a la función que dice iniciar sesión, no está autenticada y no tendría ningún reclamo. Por eso cuando iniciamos sesión, vemos el inicio de sesión usando este esquema de autenticación. Entonces eso significa que no estás autenticado. Tienes a tu principal y el principal tiene identidad e identidad como reclamo. Entonces así es como todo se une no, para ser puesto en los contextos HTTP objeto de usuario, ¿verdad? Entonces a pesar de que puedo ver usuario por sí mismo aquí, en realidad, usuario es igual que un objeto global que puedo llamar aquí, pero realmente es parte de los contextos HTTP porque no puedo verlo ese usuario punto, son los mismos objetos realmente, ¿verdad? Entonces solo mostrarte cómo todo está conectado. Por lo que user.name, identity, dot se autentica, dirá que sí o no. Si está autenticado, entonces queremos aquí nuestro artículo de navegación. Y solo lo estoy poniendo dentro del enlace del botón de navegación. Entonces todo parece uniforme, pero realmente no va a ir a ninguna parte. Y le damos el valor de san user data identity dot name. Entonces nombre aquí representa un reclamo. Y recuerden que ni estamos sentados de los reclamos que dijimos para nombrar los que deliberadamente les dieron dos valores diferentes para que podamos ver cuál de ellos se está usando realmente y veamos un nombre de entidad. Entonces veremos eso en unos pocos. Entonces tenemos nombre de punto de identidad, y luego tenemos este botón de logotipo, que va a navegar a una página que estamos a punto crear también en la carpeta auth llamada logos. Y su único propósito es registrar las sales de la persona. Entonces si están autenticados, deberían ver nacer su nombre de usuario y logotipo. Y si lo deseas, probablemente puedas calificar eso y decir hola, dot nombre de usuario o bienvenido. Ya sabes, algo amistoso si no son autenticados en el que hubiera estado en la sección else, entonces queremos mostrar la capacidad de registrarse. No tengo son sólo la página al menos aún no. Pero la capacidad de registrarse así como la capacidad de iniciar sesión. Y como estoy aquí, veo que necesito tipo de modificar este es ruta de página B y dejar que ruido off slash login. De acuerdo, así que antes de hacer todo eso o antes de saltar a lo que sucede con el logo, quiero que echemos un vistazo a watts. Esto cederá. Por lo que por el momento, no estoy ingresado. Si estás conectado, probablemente vas a estar viendo otra cosa que se muestra, pero eso está bien. Simplemente seguiré adelante e iniciaré sesión. Y cuando haga eso, verán aquí mi mensaje de bienvenida y el nombre de usuario aquí. Entonces, para que eso signifique el reclamo de que le damos ese valor es lo que se está accediendo por un nombre de entidad. Entonces claramente eso no es realmente lo que queremos. No queremos ver nombre de usuario bienvenido aquí. En cambio, quisiéramos mostrar el nombre de usuario real. Por lo que sólo les damos la variable apropiada que estaría almacenando lo que les pedimos como su nombre para mostrar. En ocasiones se desea mostrar un Nombre, Apellido. Es así de sencillo. Asignas ese papel no son inflamación más bien a ese reclamo. Y entonces se va a exhibir así como así. Entonces conmigo cambiando eso, si vuelvo y echo un vistazo a la página, notarás que todavía voy a tener nombre de usuario aquí. ¿ Por qué todavía tengo nombre de usuario aquí? A pesar de que acabo de decir claramente cambio y limpio. Eso se debe a que se creó el reclamo o se crean todos estos reclamos. Estos objetos se crean y estos se iniciaron y se almacenaron en la cookie. Por lo que la cookie sigue existiendo mientras puedo hacer cambios, pero hasta que cierre la sesión y registre bikinis fue a reconstruir la identidad de datos. Por lo que en realidad es un poco difícil cambiar una identidad después de que ya está construida y ya autenticada se puede hacer. Pero no suele ser algo que la gente practica hacer. Entonces el punto es que quieres acumular todas tus reclamaciones y tu identidad antes de autenticar al usuario. Ahora, sólo voy a registrar botes, así que eso debería matar a esa sesión ingresada. Veo que acabo de cerrar la sesión. Entonces echemos un vistazo a lo que hacen las páginas del logo. Así que crea unas nuevas recetas. Entonces la página de resultados, puedes usar ya sea uno vacío, está bien, pero queremos tanto la vista como el código detrás. Por lo que la vista está vacía. Pero el código detrás de Git va a hacer algo como esto. Por lo que podrías conseguir eso sí evita on gets método, siempre puedes simplemente cambiar es nuestro ser una AsyncTask of action results on get, on, get async. Y luego vamos a usar siempre la llamada de contextos HTTP al método asincrónico de registro, litigar en ninguna parte firmando toda la autenticación de cookies, ¿verdad? Eso fuera, queremos simplemente volver a la página de índice de toda nuestra aplicación. En este punto, probablemente podrías pensar en URL de retorno y todas estas cosas, pero no nos meteremos en esa extravagancia. Todo lo que sólo queremos saber que estamos cerrando la sesión en este punto, ¿verdad? Entonces eso es casi todo lo que hace el logo. Entonces tratemos de decir que necesito una vez más. Entonces si entro, estoy en mi página de inicio de sesión, pongo mis credenciales, y luego ahí voy. No, está construyendo el reclamo con el valor de la dirección de correo electrónico siendo Boston como nombre, limpio. Si cierre la sesión va a matar esa autenticación de cookies y ponerme de nuevo en el, en la pantalla de índice, ¿verdad? Si voy a anuncios después de iniciar sesión o, oh lo siento, ese no estaba protegido después de iniciar sesión para categorías. Ahí vamos. Si digo Recuérdeme, eso va a persistir. Por lo que incluso si cierro el navegador, la cookie seguirá existiendo. Haga clic en Iniciar sesión. Y luego si solo vamos a Inspect Element o F2 en tu teclado y saltamos a la aplicación. En realidad verás las cookies que existen a medida que avanzamos haciendo el CSE aquí, aplicación de identidad, ¿verdad? Galletas, todas esas cosas. Entonces si despejo, déjame solo borrar todas estas cookies en logotipos login. Aquí verás que se crea la galleta. Para que en el nivel muy básico sea cómo se puede habilitar la autenticación de cookies, cómo podemos mostrar quién está conectado, y cómo podemos controlar el flujo de nuestra aplicación y logotipos. Tener código escrito desde cero. 6. Explorar reclamos y director: Oigan chicos, bienvenidos de nuevo. Entonces en la lección anterior, miramos cómo podemos acceder al reclamo para poder configurar el inicio de sesión, Hold the cookie autentication funciona y todo, todo el flujo de trabajo. En esta lección, queremos tipo de construir sobre ese conocimiento y mirar lo que se necesitaría para facilitar el motor de inicio de sesión de terceros. Tan abiertos a saber hemos construido nuestro propio motor de inicio de sesión tan anémico como es el código de inicio de sesión, ¿verdad? No, porque hemos codificado duro lo que buscamos. Probablemente habríamos estado usando una base de datos sobre más adelante vamos a estar usando una base de datos. Bueno, sólo para pasar por lo básico, vemos que verificamos la entrada versus los valores esperados. Y luego vamos adelante y hacemos la autenticación. ¿ Sabes qué pasa si quisieras confiar en plataformas de terceros? Porque muchas de las veces cuando vas a sitios web, verías algo así como un login usando Facebook login usando tutor login, usando Google, etcétera. Y ese tipo de espíritus del usuario. El, el, qué debo decir no, la tediosa tarea de poner en el formulario de pedido de llenado cuando ya tienen estos escaneos de un cono. Entonces aquí solo quería mostrar los conceptos básicos de cómo harías para facilitar ese agujero. agregaríamos a lo que actualmente tenemos. No vamos a poder hacerlo hasta completar sin embargo, porque necesitarás registrar tu app y te saca un ID de cliente y secreto de cliente, lo cual te estaré mostrando que si tuvieras todas estas cosas, lo que se requeriría OFF para conseguirlo trabajando en su aplicación. Por lo que comienza en el archivo de inicio, justo, aquí mismo estamos habríamos dicho Autenticación AD. Dijimos que queríamos un esquema de cookies a partir de aquí. En realidad podemos, voy a decir margarita chain, pero en realidad podemos, usando la API Fluent, agregar bibliotecas adicionales aquí, correcto, así que eso es una cookie extraña, pero entonces ¿qué pasa si ese punto y coma no lo terminó ahí podría decir algo así como agregar Google. Y esto tomaría sus propias opciones. Y la expresión lambda con opciones que necesitaría, ¿verdad? Entonces aquí, obviamente hay una línea roja, pero si hago Puntos de control y todo eso no me da el prompt para la biblioteca. Eso está bien. Si vamos a New get sales trends, que una vía atajo. Y claramente eso no funcionaría. Así que vamos a saltar a un nuevo Git. Y en nuGet fin de semana boroughs y encuentra las diferentes bibliotecas para nuestros proveedores de OpenID. Entonces si solo tecleamos, déjame intentar abrir ID. Está bien, no OpenID, me disculpo, Vamos a escribir la autenticación. Entonces eso es más biblioteca global a lo que queremos. Entonces bajo la autenticación se ve mucho, pero luego verás que también tenemos espacio para Google, Facebook, Microsoft son copropiedad, y Twitter, ¿verdad? Entonces para cualquiera de estos que desee utilizar como proveedor de OpenID para la autenticación en su aplicación. Puedes ir por delante. Entonces intentémoslo con un Google. De hecho, vamos a instalarlos todos porque al final del día, solo quería mostrarles cómo serían las sentadas para cualquiera. Está bien. Por lo que los he instalado todos. Y si vuelvo a saltar a mi archivo de inicio, ahora verás que en Google ya no tiene un error. Entonces como dije, puedo nariz, barbilla todos ellos. Entonces lo que voy a hacer es solo duplicar en Google. Y desde aquí solo diré agregar Twitter. Facebook. Ahí vamos. Y agrega Microsoft. Por lo que todas estas bibliotecas estando presentes un más bajo para usar estos como potenciales motores de autenticación para nuestra aplicación. Entonces yendo más allá de solo tener las líneas adicionales, no, te estoy mostrando lo que disparó al nivel básico por conexión a estos servicios, ¿verdad? Por lo que las bibliotecas, sabremos las ubicaciones API sostienen para hablar con la API relevante para la autenticación contra un servicio. No obstante, por tu parte como tercero consumidor, debes asegurarte de que has registrado tus sitios web o tu aplicación en Google o en Twitter, Facebook, lo que sea. Y le proporcionarían una identificación y un secreto. Por lo que tendrías que proporcionar estos dos valores, nulo. En este punto. Sería tan fácil como poner aquí llave reclamada y el secreto aquí, ¿verdad? Pero probablemente no querrías codificarlos duro o ponerlos a la luz que en el código fuente. Porque entonces cuando enciendes esto en GitHub o cualquier formulario de control de fuentes, va a ser accesible globalmente para todo el mundo y cualquiera puede secuestrar su derecho. Te gustaría poner estos en alguna forma de configuración que esté asegurada. Por lo que eso eliminaría por defecto también el archivo AP settings.js ON porque esto sería tan accesible públicamente como ponerlo en el archivo de inicio. Entonces aquí es donde hablamos de secretos. Entonces en tu aplicación, si eres los proyectos web, en realidad puedes decir administrar secretos de usuario. Y luego a partir de aquí, puedes poner en tus valores, tus pares de valores clave. Entonces, por ejemplo, si tuviéramos que poner en el par de valores clave son el ID y el secreto para decir, Google. Se crearía una sección llamada Google tal vez. Y vas a notar que es el mismo tipo de archivo JSON al que estamos acostumbrados con la app settings.js IN read. Entonces dirías Google y luego ponías la llave la cual se reclamaría id Y luego pones la llave aquí, lo que sea, la suya aquí, y me ayudas a que mi ortografía sea correcta, entonces tendrías a tu cliente secreto. Así que déjame saltar y asegurarme de que no lo deletreo incorrectamente. Entonces dirías secreto cliente y luego verías secreto aquí. Muy bien, entonces eso es básicamente lo que harías. Y luego tantos de ellos como tú tienes, tienes Google y Facebook, ¿no? Será lo mismo, etcétera, etcétera, etcétera. Por lo que todos estos se almacenarían en ese archivo secreta. Y si en caso de que tengas curiosidad en cuanto a dónde está ese secretas, en realidad está siendo almacenado como un directorio secreto que se llama vía este, sea cual sea este valor, ahí es donde está. Entonces la idea de que esto tiene poco sentido para ti, y no puedo explicarlo mucho mejor que esto es por eso que se llama secreto, ¿verdad? Entonces ahí es donde se almacenarían esos secretos y cualquier cosa por el estilo, cualquier clave API o cualquier cosa que sea un poco segura, querrías poner, asegúrate de ponerlo dentro de ese archivo JSON dot secret. Una forma alternativa de gestionar en los secretos podría ser usar la consola. Por lo que usando la consola de Package Manager, en realidad podrías ver algo como los secretos de guión del usuario.net. Eso no completa init y eso lo haría empezar. Y luego bajo eso verías dotnet usa secretos set. Y luego pondrías como nuestros pares de valores clave, yo diría algo como Google colon, ID de cliente, es decir la sección sobre Google y el ID de cliente clave. Y luego el valor de la clave aquí. De acuerdo, entonces cualquiera que sea más fácil para ti, puedes hacerlo sin embargo. Esas ondas, tal vez no estés usando Visual Studio. Si estás usando Visual Studio Code, entonces probablemente querrías usar el enfoque de línea de comandos de todos modos. Entonces ahí es donde almacenarías el secreto y todo para acceder a estos secretos, más o menos tendrías que ir a la configuración. Entonces en lugar de escribir y el valor que dirías configuración y usar corchetes, mirarías el valor clave que aparece así el, la sección más bien dos puntos la clave, ¿verdad? Entonces de la misma manera que lo habrías creado en la línea de comandos. Aquí hay áreas que solo conocen apologistas, pero Google, eso es una sección y luego ID de cliente déjame arreglar la ortografía así que soy consistente. Entonces Google y luego ID de cliente. Y entonces sabría simplemente ir y buscar en los secretos para esa misma cosa para un secreto cliente y para cada otro. ¿ Está bien? Entonces eso es más o menos cómo seguirías tus claves secretas que desearías para tu API de terceros. Entonces te estoy mostrando dentro del contexto de los proveedores de autenticación Lo que en general, si se trata de un proveedor de correo electrónico, son cualquier otra cosa que dada la clave API que necesitas para mantener segura, Eso es todo suyo, básicamente lo harías y así es como lo accederías cuando sea necesario. Ahora, fuera de esto, ¿qué pasaría si quisiera cambiar tal vez el esquema por defecto Del esquema de desafío más bien de las cookies. Entonces bien, no, Lo que tenemos es la galleta como la que fue la primera que configuramos. Pero antes de decir que me gustaría cookie dentro de esta Autenticación AD, realidad podríamos cambiar esto en una configuración de opciones completa. Entonces solo usaré toda expresión lambda y luego el objeto. Y luego dentro de aquí podemos especificar todas las opciones como o punto, esquema de autenticación por defecto, esquema Default Challenge, esquí de inicio de sesión predeterminado, ¿verdad? Entonces si quieres usar por defecto Facebook, puedes agregar todas estas cosas aquí. Entonces si dije que el esquema predeterminado debe ser la cookie de autenticación, está bien. Pero entonces y si mi reto, antes de crear una galleta, Mi ser seguido Caldeos, él y yo quisiéramos que fuera, yo podría decir que los valores predeterminados de Google, que es una constante que consigo. Ahí vamos de esa Biblioteca de Google. Por defecto esquema de autenticación de puntos. Y estoy bastante seguro de que tengo esos impagos para cualquier otro. Por lo que Facebook por defecto. A ver si existe uno. Valores predeterminados, pensamiento, esquema de autenticación, ¿verdad? Entonces, cualquiera de ellos que hubiera querido ser el esquema de autenticación predeterminado, puede seguir adelante y especificar. Entonces eso significaría que cuando navegamos a una página que está protegida a través de nuestro filtro de autorización, diría cuál es la forma predeterminada que quiero que mis usuarios se autentiquen. Entonces con la configuración automática de todo esto, esa era la autenticación de cookies predeterminada era un valor predeterminado. Fue directo nuestra página de inicio de sesión, sin embargo, no, estoy viendo si la persona no va directamente a la página de inicio de sesión, como si navegan slash login y van allí. Si van a la dirección IP está protegida, entonces quiero que vayan directamente al reto de Facebook pH, momento en el que su aplicación se alejaría a Facebook, les permitiría autenticarse con su cuenta de Facebook y luego remontada con todos los reclamos e información de Facebook. Y entonces la cosa es que estas afirmaciones que habríamos configurado en nuestro login como dinero así como las costuras, estas afirmaciones son a las que vas a llegar básicamente de cualquier proveedor OpenID, desde cualquier autenticación en terceros plataforma de autenticación. Se trata de reclamos comunes que se comparten. Entonces es algo así como un estándar. Por eso cuando LC y eso entonces a pesar de que dice nombre aquí, verás esta URL de aspecto muy largo. Entonces esa URL significa que cada aplicación, no importa si es dotnet, Facebook, Python, cualquiera que sea, todas ellas pueden llegar al mismo nivel. Y estoy de acuerdo en que esto es lo que llamé claim es, y así es como lo voy a usar en mi aplicación. Está bien, así que eso es, eso es lo que voy a parar. Como dije, tendrías que ir y firmar abierto, asegurarte de registrar tu solicitud y así sucesivamente. Pero en el nivel muy básico, así es como resolverías eso. Algo que recomiendo antes de seguir adelante sin embargo, es comentar la adicional. Entonces o demostrar que mantenga para agregar el ID del cliente y el secreto usando la configuración. Pero luego si no proporcionas nada con sensatez aquí, entonces vas a obtener errores de tiempo de ejecución. Te recomiendo que solo sigas adelante y comentarlos o eliminarlos, o solo tienes los que sabes que vas a estar usando. Tú, los voy a dejar aquí comentados para que cuando veas el código fuente, puedas tener yo punto de referencia. Pero recomendándote una vez más, coméntalos para que cuando corras, no recibas ningún error en tiempo de ejecución, ¿verdad? 7. Revisión de la sección: Muy bien chicos, así que eso es todo para esta sección. Hagamos un breve recapitulación de lo que hemos logrado. Entonces vinimos aquí, tanto si sabíamos de identidad como si no. Probablemente sabíamos lo que la identidad podía hacer fuera de la caja por nosotros. Pero en esta situación, empezamos desde cero hasta obligación básica, base de datos básica. Ya sea básico o complicado, los principios siguen siendo los mismos. Sabemos que podemos ir al inicio de semana y un conjunto de la base de datos podemos configurar la autenticación en nuestra aplicación. Podemos hacerle saber que se supone que usa la autenticación de cookies. Podemos rotarlo a cualquier ruta de inicio de sesión que queramos, quienquiera que página personalizada. Todas estas cosas maravillosas. Podemos configurar nuestra política global de autorización para la aplicación. Por lo tanto, cada página de forma predeterminada tendría que ser accedida por un usuario autenticado. También sabemos que en la startup tenemos que agregar el middleware para usar la autenticación, que se recomienda que lo hagamos antes de usar la autorización, que generalmente sale de la caja de todos modos. Bueno, el lado de TI de esa puerta miramos a configurar un sencillo formulario de inicio de sesión. Había agregado algunos enlaces adicionales nosotros para mostrar cómo se vería cuando mostráramos inicio de sesión con las plataformas de terceros. Y antes de pasar de la startup, también miramos agregar son algunos de los pasos para agregar autenticación de terceros sobre cómo ocultar las secretas de la glándula clave de reclamo en la parte secreta de nuestra aplicación dotnet Core. Por lo que todas esas cosas maravillosas que hemos podido lograr. También miramos el hecho de que podemos hola anónimos. Entonces si no lo hicimos Van autorización global. Si quieres autorizar quién usaría corchetes y decir autorizar sobre cualquier página o acción que queramos restringir. De lo contrario, tendríamos que decir permitir el anonimato si todo está restringido, lo que queremos permitir que ciertas páginas sean accedidas por sobre persona autenticada. Así que al igual que nuestra página de inicio en definitivamente permitir anónimos para que pudiera ser nuestra página de destino. También miramos la configuración de los reclamos de acceso. Entonces después de iniciar sesión, sabemos cómo construir que reclama identidad y luego el principio de siniestros y luego finalmente firmar a la persona, creando la cookie en el camino. Y luego cómo acceder a estas pantallas para mostrar información de los autentica esa persona. Entonces con todo el repentino hecho, solo voy a revisar esto porque GitHub es donde almacenamos todo nuestro camión de cambios, todo lo que estamos haciendo a medida que avanzamos. Así que pone en mi mensaje rápido ahí y adelante y comprometer todo y hundirse y dejar que suba eso. Y eso es todo para esta sección. Entonces te veré pronto. 8. Qué es el núcleo de identidad: Oigan chicos, bienvenidos de nuevo. En este módulo, vamos a empezar a mirar la biblioteca de identidades y todas las funciones que nos brinda conocen solo por contexto. Identidad o núcleo de identidad es la biblioteca que viene con cualquier velocidad en una aplicación de núcleo. Y nos permite gestionar operaciones relacionadas con el usuario y datos con Alltop interactuar código mucho complejo. A pesar de que la caja, es verbal lleno únicamente. Si necesitas código complejo, puedes extenderlo con bastante facilidad. Pero fuera de la caja ha sido bastante confiable y poderoso para ti. Y mis necesidades, por supuesto, como siempre dicen, las reglas de negocio de todos diferirán. Sepan, como se relaciona con lo que hemos hecho frente a lo que la identidad nos permitirá hacer con la identidad. No tendríamos que escribir todos los reclamos manualmente y construir todo eso. El caso es que lo que hemos hecho donde construimos nuestros propios reclamos de usuario e identidad principal para luego crear el valle del dinero de las galletas. Eso probablemente sería útil más cuando se trata de una aplicación que tiene que confiar en la autenticación de terceros. Y luego simplemente pasa por encima de la información, entonces podemos construir nuestro dinero de Reclamaciones de Usuario mientras vendían. Al igual que si estamos lidiando con JWT o con el tercero off, ahí es cuando terminaríamos necesitando hacer todo eso. Estaremos viendo escenarios similares a ése más adelante en el curso. Entonces, ya sabes, solo nos estamos poniendo en marcha para ver tratos completos de ASP.Net Core con autenticación y autorización. Entonces pasos de bebé, tuercas y pernos. Pero en este nivel vemos cómo podemos hacerlo manualmente. Entonces lo que vamos a hacer aquí es crear un nuevo proyecto. Ahora esto es más como un show-and-tell. Puedes seguir lo que estoy haciendo. Pero es opcional porque seguiremos utilizando nuestros sitios web de clasificados iniciales. Pero aquí te voy a mostrar cómo se podría construir la autenticación, la autorización, todas esas cosas en el proyecto desde el principio. Entonces si fueras a crear un nuevo proyecto y eliges tu proyecto web SBA.net Core, uno nuevo funciona una vez más, ¿qué es la web arriba o el MVC? Ambos tendrán un VCs y listados aquí en algún lugar de la lista, pero están usando las páginas de afeitar o el MVC ahí está. Sería el mismo principio. Conoce cuando te acerques, lo das y yo solo le voy a dar el nombre simple auth up. Y haz clic en Siguiente en este verde, obtendrás la opción de cambiar el tipo de autenticación. Por lo que los clasificados sobre saber tiene no selectivo y por defecto no lo será, no lo lamento. Pero entonces si dijeras conos individualistas, entonces automáticamente andamió ciertas cosas para ti que facilitan la identidad fuera de la caja son la autenticación, autorización, todas esas cosas fuera de la caja. También notarías que tienes todas las opciones, tienes la plataforma de identidad. Tan pronto vale la pena hablar de agregar autorización de terceros usando Microsoft o Facebook o Google, etcétera, con este autoboxing, apoyando al de Microsoft. Y luego tenemos ventanas que serían más parecidas si estás usando Active Directory. Y tus usuarios necesitaban autenticarse solo por estar en la red. Por lo que eso sería un tema para otro curso o más adelante. Para que podamos ver conos individualistas. Y luego solo vamos adelante y pegamos a Crear. Entonces una vez que se crea ese proyecto, podemos tomar nota de algunas cosas adicionales en esta plantilla que no están en nuestras plantillas de clasificador, ¿verdad? Entonces los voy a tener una especie de tenerlos uno al lado para que puedan ver a qué me refiero. Entonces en cuanto a datos, tenemos una carpeta de datos. Cuando no incluyes la identidad, no obtienes esa carpeta de datos de forma recta. Conociendo esa carpeta de datos automáticamente tienes migraciones y contextos DVI de aplicación. Entonces tengo un proyecto de datos donde habría tipo de construir esas cosas en, ¿no? Entonces tenemos migraciones, tenemos los contextos de base de datos de aplicación. Seguro. Pero si miras en esta aplicación contextos DVI, vas a notar algunas cosas que son diferentes. A atornillada. Es heredar de los contextos DVI de identidad en contraposición al que tenemos, que es sólo contextos DVI. Por lo que los contextos DVI le dan una conexión a Entity Framework Core. Eso está bien. De acuerdo, le permite saber que esta es la base de datos Entity Framework. El núcleo es lo que estamos usando. Blablabla, quien identifique contextos DVI extiende contextos DVI y agrega las tablas relacionadas con la identidad, alt fuera de la caja. Por lo que las tablas relacionadas con la identidad, que veremos en unos pocos, incluyen tablas para almacenar roles, información sobre filas, perdón, información sobre usuarios, reclamos, todas esas cosas. Todas esas tablas se generarán junto a la base de datos una vez que utilicemos esta aplicación, contextos VB. Muy bien, no se pueden extender contextos de base de datos de identidad porque tienes diferentes sobrecargas son cosas diferentes que puedes poner en sake y poner como una clase personalizada para el usuario, clase real personalizada, y una clave personalizada. Fuera de la caja tenemos identidad usuario. Por lo que, ese usuario de identidad de clase representa a esta entidad de cabeza roja. usuario presenta la clase de usuario predeterminada que viene con identidades. Entonces usando lotes de control y agregando declaración, ¿verdad? Tienes rol de identidad, que también está fuera de caja cuando se trata de identidad, realmente yo mismo. Y entonces la clave aquí significa ¿qué tipo de datos debo estar usando para generar el valor clave? Entonces en algunos casos, o por defecto más bien viene con cadena, ¿verdad? Por lo que tendría buenos valores como las claves para estas dos tablas por defecto. Pero y si quisieras usar enteros, entonces puedes decidir int. Por lo que estarías contando los contextos DVI y hay algunas otras configuraciones que tienen que poner en el camino. Pero una vez que quieras cambiar ese tipo de datos, puedes hacerlo. Mostrar su flexibilidad es, pero una vez que salga de la caja, será cadena. No me di cuenta de que va a dejar de completar. Por lo que estoy tratando de reducirlos todos a personalizaciones en este punto. Entonces cuando salgamos de ese incumplimiento, no se quejará. Y aunque no lo calificáramos con todo eso, esos son los predeterminados de todos modos, en el archivo CSS de punto de inicio, también verás que en realidad tenemos todo esto saliendo de la caja. Entonces sin agregar identidad, eso habría sido todo lo que vimos en la dirección en el archivo de inicio, ¿verdad? Entonces en realidad tuve que agregar eso manualmente con nuestra startup. Esto se agregó manualmente. Pero entonces se ve por aquí fuera de la caja obtuvimos el contexto DB en él con una cadena de conexión predeterminada. Y también agrega en la identidad predeterminada con algunas opciones y dice su uso Entity Framework como las tiendas. Está bien, así que definitivamente estoy alterar la caja. Todas estas cosas tipo de vienen cableadas. Otra cosa de la que podemos tomar nota es en la carpeta migraciones, en la carpeta de datos, veremos que salimos de la caja con una migración. Y esta migración crea todas las tablas que se requieren para la identidad. Por lo que integrales ISBN, Ahí es donde se almacenarán las reglas. Usuarios de red SBI. Ve que sale de la caja con todas estas columnas. No, la clase que había mostrado sólo sabe cuál es el usuario de identidad. Esta clase da acceso automático a todo en este se ha sido AT tabla de usuarios. Por lo que de forma predeterminada, cualquier objeto de usuario de identidad va a tener propiedades. Yo solo estoy controlando dando click para ver si puedo entrar, ver la definición de esta clase. Y ahí vamos. Yo solo controlo click. Déjame volver atrás y mostrarte, solo control-clic en el sobresalto o así Control haga clic Agregar usuario de entidad y luego Controlar clic de identidad usuario relativo a cadena. Y entonces eso nos permitirá ver todos los campos que hay ahí. Por lo que estos son todos los campos IDE y normalizar correo electrónico, nombre de usuario, contraseña, contraseña, hash. Todos estos campos corresponden a la tabla para los usuarios de ASP NET. Para que no tengas que escribir ningún código excesivo para poder acceder a estos campos. Otras tablas incluyen las afirmaciones de rol. Entonces tenemos una idea de cuáles son los reclamos. No necesariamente sabemos cuáles son las reglas, al menos no dentro del gran esquema de las cosas. Pero básicamente se pueden asignar reclamos a través de reglas, también, reclamaciones de usuarios, sabemos cuáles son esas. Por lo que en realidad puedes almacenar esos en la base de datos en lugar de construirlos manualmente. Cuando una persona inicia sesión, se almacenará en la base de datos y se cargará automáticamente en una cookie después de que el usuario se haya autenticado. Rojo, tenemos ISBN en el inicio de sesión del usuario. Por lo que éste puede rastrear a los terceros proveedores que los usuarios podrían usar o los conos asociados con ellos que podrían estar usando para acceder a tu sitio web. Tenemos es cacahuetes roles de usuario. Entonces esto es decir: ¿Quiénes son los usuarios, cuáles son las reglas, y luego qué reglas hacen estas ISAF? Entonces es como una tabla enlazadora de muchos a muchos entre la tabla de usuarios y la tabla de roles. de Tolkien, éste es, si estamos usando la referencia de Tolkien, que veremos más adelante. Entonces solo te estoy mostrando eso fuera de la caja y saca todas estas mesas. No tienes que construirla nieve. Una vez más, si ya tienes tu tienda de usuarios o ya estás haciendo tu propia autenticación, pero quieres extenderte para usar la identidad para manejar esas identidades muy flexibles y extensibles y se pueden usar. En eso, pero eso está fuera del alcance de este curso ya que estamos tratando de entender los conceptos básicos que se necesitan para conseguir la autenticación en nuestra aplicación aquí. De acuerdo, entonces cuando regresemos, lo que estaremos haciendo es agregar autenticación en nuestra autenticación adecuada, nuestra identidad, a nuestra aplicación existente. Entonces Alltop the box, habríamos podido simplemente decir, bueno, déjame disculparme, déjame saltar a la app settings.js IN file. Entonces a esta base de datos se le habría llamado así, ¿verdad? Entonces toda la caja, déjame solo hacer esto y podemos ir a la siguiente lección. Si digo actualizar la base de datos de guiones, lo que esto hará es realmente dejar que genere la migración asociada a la base de datos o la migración que salió de la caja más bien. Y luego cuando tengamos esa base de datos, y en cuanto eso se haga, ahora puedo acceder a todas las tablas que acabamos de ver en el archivo de migración, ¿verdad? Entonces si iba a ejecutar esta aplicación, entonces ves que obtenemos el mismo boilerplate y fuera de la caja, obtenemos un registro y enlaces de inicio de sesión. Por lo que no creé esos esta vez. Lo hicimos manualmente con un clasifica, pero aquí están. Y si hago click en Registrarse, ya ves que no lo hacemos, pero ¿qué registro página derecho. Creando nuestros conos, poner en correo electrónico, poner contraseña, confirmar contraseña. Si voy a login, ya ves que tenemos login. Y luego nos deja saber cómo probablemente podemos ir a un barco sentado, monitores externos de inicio de sesión o servicios de autenticación, como lo que miramos. Entonces solo te estoy mostrando eso. Sí, hicimos todo ese dinero salvajemente. Sólo queríamos ver cómo todo está conectado. Nulo. Sabemos cómo hacerlo fuera de caja si me inscribo bien, no. Y sólo elegiré una contraseña fuerte que nos sugerimos, si hago el registro, que en realidad irá a la base de datos. Correcto. Y todo lo anterior a este traje se clasifican como lo hacemos encima de una base de datos almacenando usuarios, razón por la cual no tenemos un registrado todavía. Pero puedo poner en una conformación así que miramos cómo realmente enviar un correo electrónico, pero están simulando que confirman el flujo de trabajo de correo electrónico justo ahí. Y luego si vuelvo a iniciar sesión fuera del navegador recordando las cosas, porque eso realmente no es ninguna característica de identidad. Pero si salto a la tabla de usuarios y veo datos, entonces verás que no hay almacenado, derecho, ese usuario. Y así es como luce ese papel. Y mira esa contraseña. Entonces recuerda que usamos una contraseña de texto sin formato cuando estábamos configurando la nuestra propia, por supuesto, eso es tabú en la base de datos. Sería hashed automáticamente cortesía de nuestro servicio de identidad. Entonces esta es una herramienta fuera de la caja muy poderosa y vamos a divertirnos mucho mirando las notas, el tazón, así que todo está configurada y cómo podemos maximizar nuestra seguridad usando las características fuera de la caja de Microsoft. Por lo que solo funciona un inicio de sesión de prueba más. Ahí vamos. Entonces exactamente lo que hicimos, todo eso. Aunque no he escrito ningún código abierto en, y ya tengo un sistema de inicio de sesión totalmente funcionando que ya es seguro porque mi contraseña se está calmando y fácilmente puedo empezar a agregar autorizar en cualquier lugar. Y va a funcionar. Entonces no vuelvas, veremos cómo si ya creamos nuestros proyectos, santos, metemos esta característica en ese proyecto. 9. Añade identidad a el proyecto existente: Muy bien chicos, así que ahora que sabemos fuera de la caja lo que obtenemos con esa entidad y tenemos una mejor comprensión de cómo funciona. Empecemos a reajustar nuestra aplicación para hacer uso de las bibliotecas que tenemos a nuestra disposición. Entonces algunas de estas cosas solo estoy entrecerrando y literalmente me presté de lo que se generó con el juramento del marcador de caja si tuviéramos habilitada esa entidad de la bala de get-go, claro, te explicaré lo que está pasando a medida que vamos por lo que entendemos qué es cada línea, cuatro, ¿verdad? Entonces ya tenemos nuestro contexto DB y sabemos que estamos usando nuestra conexión de base de datos, eso está bien. No obstante, lo que hay que añadir es la herramienta Identidad, todo este ámbito. Entonces voy a saltar al contexto DB y voy a hacerle saber que ya no quiero que solo uses el contexto DB y quería usar contextos de base de datos identitarios. Entonces recuerda que los contextos DVI identitarios es lo que nos permite utilizar toda la caja, las diferentes tablas que podemos conseguir. Entonces solo voy a seguir adelante e incluir el paquete está siendo un punto de identidad core EF Core. Y dejé que encontrara que instalara el último cubo. Y una vez que ese pecado aparecen todas las lentes rojas y todo se ve como antes. Agradable y fácil, ¿verdad? Entonces no, automáticamente tendremos acceso a esas mesas. Ahora mismo en la clase de inicio, tenemos que hacerle saber que queremos usar la identidad predeterminada. Por lo que vamos a ver los servicios dot identidad predeterminada y todos ustedes tienen clases diferentes que pueden usar. El Azure AD Identity, Identity core, y también tienes una identidad predeterminada. Entonces la diferencia entre ellos es que cuando dices agregar identidad por defecto significa todos los ajustes por defecto, por favor ponlos ahí. Puedes ponerte muy granular y decir agregar identidad, y luego agregas lo que quieras y te vas a ir un rato que no quieres. Y francamente, creo que eso es mucho más trabajo que tiene que suceder. Entiendo por qué se incluyó, pero por el bien de la simplicidad, y francamente mucho de la caja, es variable lleno. Yo sólo voy a quedarme con los incumplimientos. Entonces voy a decir agregar identidad predeterminada y estamos usando identidad usuario. Entonces recuerda que miramos esa entidad utiliza como la clase de usuario predeterminada que representa la tabla de usuarios. Bueno después de eso queremos cómo algunas opciones. Para que puedas agregar opciones para ver cómo queremos lidiar con la contraseña. Entonces queremos lidiar con los requisitos de inicio de sesión, ¿verdad? Entonces sólo puedo poner en esa expresión lambda. Y en realidad déjame poner esto en un objeto porque podemos tener múltiples opciones en un bloque de objetos. Y entonces puedo empezar a pescar adopciones. Pero antes de eso quiero resolver este problema así que necesito una biblioteca y agradezco lo consigue a través de punto de control. Entonces eso está bien. Lo que haré es saltar a nuestro gestor de paquetes NuGet y voy a buscar Microsoft.NET dot Microsoft ASP NET Core identity wi. De acuerdo, así que eso es lo que nos da los valores predeterminados son Razor pages UI incorporado para el cloruro Entity Framework. Entonces como estaba diciendo, cuando agregamos identidad por defecto, hay ciertas cosas que acaban de salir de la caja para nosotros. Por lo que la UI es una de esas. Entonces solo voy a seguir adelante y conseguir esa versión. Y solo voy a pasar al archivo CSS solo para asegurarme de que no se añada. Ahora una cosa a 0 a l m aquí, y este ha sido el ser de muchas frustraciones en cursos anteriores e incluso en mi trabajo. Si las versiones aquí no hacen mucho, entonces podrías terminar obteniendo errores en errores inexplicables. Con andamios. Andamios es generar archivos o generar vistas. Vistas en los mecanismos automáticos de Visual Studio y el framework. Si estas versiones aunque entre las bibliotecas de autenticación y las bibliotecas de Entity Framework, entonces encontrará problemas, ¿verdad? Entonces a veces podrías tener 0.09 o al menos al momento de esta grabación, punto 0100 es elitista, ¿verdad? Pero entonces si tienes uno que no es 0.10.9, eso podría causar un nichos. Entonces cuando lleguemos, si tenemos un AC, entonces lo arreglaremos. Pero en términos generales, se relaciona con cualquier cosa que esté con la autenticación o Entity Framework. Todas ellas deben ser las mismas versiones. Muy bien, entonces este punto de información aquí mismo. Por lo que ahora podemos confirmar que se agrega nuestra nueva biblioteca si saltamos nuevo a nuestra startup archivada y vemos que nuestro error. Aparece y eso está bien. De acuerdo, quítale esto antes. Pido disculpas. Entonces así debería ser tu línea, ¿verdad? Entonces eso es un espontáneo entonces, ¿qué opciones tenemos? Por lo que tenemos PaaS o adopciones de opciones de inicio de sesión, de opciones de usuario para la contraseña. Podemos especificar que queremos requerir un dígito. Entonces sí, queremos requerir dígito, cierto, ¿verdad? Entonces podemos establecer la cadena de contraseña de barra justo aquí, y eso será global. ¿ Cuántos personajes queremos? Mínimo quiere quizá 7 o 7, creo que es un estándar. Una vez más, las reglas de negocio difieren. Requerimos minúscula. ¿ Requerimos no alfanuméricos? ¿ Requerimos mayúsculas? Todas esas cosas? Aunque no especifiquemos estas opciones aunque toda la caja necesitarás hasta mayúscula. Necesitarás un personaje especial, y necesitarás ese dígito. Y la contraseña debe ser mínima. Creo que ocho personajes, eso es todo fuera de la caja. Entonces incluso sin ponernos granulares, como lo que estamos haciendo aquí, serían sus botes fuera de la caja, ¿verdad? Entonces solo les voy a mostrar todos estos requieren mayúsculas. Y creo que se requiere no alfanumérico, cierto. Está bien. Entonces le diré a la caja eso es lo que un poco de lo que obtienes. Y aunque opción que podría ser útil sería la opción requerir confirmación al iniciar sesión. Por lo que opciones que requería inicio de sesión he ido confirmación. Si pasas por alto, te dice que tiene esta bandera que dice que está confirmada o no. Para que lo sepas, como cuando te inscribes en nuestros sitios web y dicen por favor confirme milagro antes de que pueda entrar y más allá hasta que hagas eso, no puedes acceder al sitio web o eso es lo que esto trae a la mesa. Por lo que estaremos poniendo en ese mecanismo de correo electrónico para salir y enviar el correo una vez que una persona se haya registrado con la aplicación. Entonces haciendo todos estos, vamos a mirar una cosa más antes de hacer una migración y luego rotos o mejor dicho generar las tablas. Y eso es extender a los usuarios de Identity. Entonces vimos las columnas y una vez más, si quieres saber qué columnas hay, solo puedes presionar F 12 o control-click y luego F2 otra vez, y luego verás cuáles son las columnas. Bueno, te darás cuenta de que estos son incumplimientos. No hay nada terrible en FirstName, LastName, saber, nada personal, nada información personal. Pebble el usuario. Por lo que en términos generales, sea lo que sea que quisieras almacenar hacen usuarios, te gustaría almacenarlos. Lo que significa que tendríamos que extender esta tabla de usuarios de identidad para almacenar más cosas. Entonces lo que terminarías haciendo es quizás crear una nueva entidad. Y sólo voy a decir nueva clase en la entidad estable. Podrías almacenar, podrías crear una clase llamada cualquier cosa. Alguien generalmente diría usuario de aplicación, se puede ver usarlo contra un usuario de la empresa. A veces tienes diferentes tipos de usuarios con diferentes campos, ¿verdad? Entonces tal vez un gerente tiene puntos de información diferentes a nuestro usuario regular, etcétera. Entonces depende, ¿verdad? Profesores de Escuela de Sistema de Gestión, estudiante como cetera, esos son todos usuarios pero con diferentes puntos de datos, pero en última instancia los quieres a todos en la misma tabla. Entonces lo que es ponible para pasar por aquí con esta clase única podría aplicarlo a muchas otras clases. Entonces si acabara de decir usuario, y esta es obviamente mi clase de usuario personalizada. Y luego a decir usuario público, puedo saber dejarlo heredar de identidad usuario. Por lo que uno por poco, heredar de identidad usuario. Se va a asumir automáticamente todos los campos que el usuario identitario tenía disponibles. Entonces puedo agregar aún más. Entonces, ¿qué pasaría si quisiera decir añadir una nueva propiedad de bit time para que mi ortografía sea correcta. Y esta sería fecha de nacimiento. Está bien. Por lo que quiero que mi empleado o mis usuarios me digan su fecha de nacimiento. ¿ Y si quisiera nombre y apellido? Entonces eso será una cadena, FirstName y string así nombre. Está bien, sea lo que sea que quiera, estoy como estaba diciendo, puedes tener múltiples usuarios, así que eso es C, la estaca adulta fuera, solo usa mucho si tuviéramos un profesor y estudiante de sistema de gestión escolar, ¿verdad? Por lo que un estudiante probablemente tendría como una cita inscrita, enseñar, me hubiera cansado el día, etcétera. Por lo que los diferentes puntos de datos se relacionarían con los diferentes usuarios. Eso es un tema para otro curso aunque eso es una vez más es una especie de cosa de extensión que tomaría un poco más de finura en la configuración. Tan aleatorio, solo voy a mantenerlo simple y solo tener mi clase de usuario personalizada, que tiene los campos personalizados. Ahora una vez que quiera usar este usuario personalizado después del contexto DB, sepa que no está utilizando el usuario de identidad predeterminado. Entonces recuerda cuando estamos viendo el proyecto anterior, podríamos venir aquí y decírselo al usuario identitario. Pero por defecto sabe de ese usuario de entidad en este momento yo quería usar usuario. Por lo que al atender contextos DVI de identidad relativos al usuario, se sabrá, mirar al archivo de usuario como punto de referencia, que en pega esa entidad de usuario cosas. Y luego algunos, ¿verdad? Entonces si no tuviera esa herencia, obtendría un error aquí. Porque el contexto de la base de datos de identidad está esperando algo de usuario de tipo, ¿verdad? Entonces por eso estás viendo ese error ahí. Por lo que tienes que asegurarte de que tengas esa herencia ocurriendo. Entonces eso es todo. Lo veremos como algo fuera del tipo que está buscando. Entonces así es básicamente como agregarías un personalizado, nuestros campos personalizados a la tabla de usuarios. Pero no necesariamente quieres eliminar campos si no usas la ayuda de los campos o utilizas los campos. Pero cada campo que se pone ahí es para un propósito específico, ¿no? Entonces al final del día nosotros, creo que esto es suficiente configuración por ahora, saltemos y agreguemos una nueva migración. Entonces cuando estamos haciendo nuestras cosas de migraciones, tenemos que ver migración. Se agregaron identidades. Tablas, nos dan ortografía ¿verdad? Después a t Tablas. Y luego por supuesto después de cambiar los proyectos por defecto que van adelante y generan. Está bien, así que estoy recibiendo un error muy desagradable aquí. Y si has hecho alguno de mis cursos con el fin de hacerlo, no me espanto de Aras. Te muestro los errores, así que creo que nos estamos perdiendo la configuración. Y estoy absolutamente en lo correcto. Entonces permítanme corregir eso. Entonces podemos ver aquí tenemos que usar el data store, Así que me perdí ese paso. Por lo que después de agregar identidad predeterminada y configurar todas las opciones, necesitamos decir add. Los valores predeterminados son una tienda de Entity Framework impar, por lo que sabe que se debe usar en el contexto de base de datos de la aplicación para almacenar estas tablas. Entonces creo que esa flecha fue todo viendo estoy muy confundido. Rant nulla. Sé que debería ser identidad. Sé que debería estar en alguna parte, pero no sé dónde poner mi quieta, Fred. Y mientras estamos aquí, otro cambio importante que debemos dar cuenta es que necesitamos saber cambiar todo a los contextos de nuestra clase de usuarios de costos, ¿verdad? Entonces no podemos estar usando usuario de identidad aquí, sino destinados a contextos BB, estas identidades son así que todo tiene que ser una especie de uniforme. Entonces usuario y simplemente seguir adelante y agregar la declaración de uso para eso. Porque en ninguna parte haciendo todo dentro del contexto de nuestro costo en clase de usuario. Ahora después de hacer esos Suchi y esto pisó de nuevo la migración de anuncios? Y esta vez estoy recibiendo unos errores totalmente nuevos. Entonces me está diciendo que la creación no modelo tiene algún problema. Entonces una vez más, lo estoy trayendo a través todos los mociones porque a veces te pierdes un paso y tiene un efecto ondulado en el error no es necesariamente decirte cuál es el tema, ¿verdad? lo que esto suele verse que una de las tablas requiere una clave primaria, algo, algo, algo aunque eso tiene que ver con el contexto DB. Y lo que no hicimos fue ejecutar la base sobre molal creando para el ModelBuilder. De acuerdo, así que esto básicamente es solo ver fuerza. qué se va a saltar en la playa incluso antes de empezar a hacer lo que se supone que pase en la implementación, ¿verdad? Entonces esa sola línea es absolutamente necesaria a ancestral lo que es identidad, ¿no? Por lo que no era antes, es nulo. Entonces solo te estoy mostrando todos los pequeños matices que entran en agregar identidad a un proyecto existente. Entonces si probamos esto una vez más, entonces tenemos éxito. Está bien, tomó algunos intentos, pero vimos lo que puede salir mal en el camino. Y cada vez que hacemos esto, debe ser una experiencia de aprendizaje para que podamos entender lo que está sucediendo. Entonces no, vemos que tenemos una migración que está trayendo los mismos conjuntos de tablas que acabamos de ver en el archivo de migración Box. Pero sabemos ver que tenemos columnas personalizadas en nuestros usuarios de ASP NET. Tenemos fechas de nacimiento, firstName, lastName, así como todo lo demás que hubiera estado fuera de la caja con ese usuario de la entidad. Muy bien, Entonces así es como podemos agregar nuevos campos a nuestras tablas. Todo lo que tenemos que hacer es crear una nueva clase. Adelante y extiende la clase que sea. Por lo que en este caso fueron los usuarios de ASP NET. A veces puede que quieras algo extra para la tabla de roles tratando de encontrar las filas todo patrimonio que estaba en la parte superior derecha. Entonces todo lo que tenemos es el nombre, el nombre normalizado en este sistema concurrente. En ocasiones se quiere extender esto por la razón que sea será el mismo principio. Simplemente sigue adelante y lo extiendes. Y luego en la startup, podrías especificar una identidad predeterminada con los diferentes tipos. En realidad, estaría aquí si añadiéramos las reglas personalizadas. Entonces no lo sería. Entonces basado en el tipo de uso de la biblioteca aquí o el método de extensión del servicio use aquí. Podría agregarlo. Es posible que no puedas, en este caso, aquí no es donde está. Si estamos usando ide identity core, entonces podríamos haberlo extendido para ver coma de usuario, cliente o con identidad predeterminada de AD. Tendrías que ver unos laterales y luego darle el nuevo tipo de rol que querías usar en ese entorno. Está bien, así que esos son los pequeños matices medida que avanzamos y cómo todo se arregla. Pero en última instancia hemos hecho nuestro andamio, lo siento, nuestra migración, no, actualicemos la base de datos. Y eso se hace. Por lo que la sencilla base de datos de nuestra que simplemente estaba almacenando información clasificada es nula, se va a extender tan pronto como FA, Ahí vamos. Y veremos que tenemos todas esas mesas como vimos de nuestro proyecto anterior. Entonces sabe lo que tenemos que hacer es terminar el cableado para que la página de registro en la página de inicio de sesión en todas esas cosas funcione. 10. Implementación de registro seguro: parte 1: Muy bien chicos. Por lo que la última vez que estuvimos aquí, estábamos en el proceso de configurar nuestras tablas de identidad donde los rayaban, las generaban en una base de datos. Ahora necesitamos realmente configurar la aplicación a agujero nulo para interactuar con la base de datos para una distribución en propósitos de inicio de sesión. Entonces lo que vamos a hacer es mirar cómo los fines de semana es un proceso de distribución seguro. Y todas las cosas son matices que debemos considerar. Entonces en el archivo de inicio, solo para empezar, voy a eliminar esta autenticación de agregar porque ya no la necesito. No necesito especificar manualmente que estoy agregando una cookie y Cito kooky porque la identidad realmente creará la cookie automáticamente. ¿ Está bien? Por lo que en realidad puedo simplemente eliminar todo esto. Y podemos empezar desde aquí mismo. ¿Verdad? En segundo lugar, no estaré necesitando la oferta especial ni la oferta personalizada que creamos, pero no soy lineal con ellos todavía lo hace. Antes de eso, quiero que veamos cómo podemos generar registro. Las edades son periodo registrado más bien. Ese es su ya cableada para buscar en la base de datos e interactúa con todos los datos que se están compartiendo. Por lo que a este proceso se le llama andamios. He estado viendo mucho andamios. Entonces cuando vamos a páginas y vamos a agregar, podemos buscar nuevo artículo rayado. En nuevo elemento rayado, verás una categoría que dice identidad y cualquiera puede hacer doble clic en eso. Y escaneará tus bibliotecas, asegúrate de que todo esté bien. Entonces nos presentan este cuadro de diálogo que dice, ¿qué queremos hacer? Por lo que una vez más, altough la caja. Obtenemos la página de registro, obtenemos la página de inicio de sesión. Conseguimos que accedan a través de la interfaz web. No obstante, los expedientes físicos no están ahí. Entonces, ya sea que estés agregando identidad manualmente o que elijas la opción para editar desde el principio. Este paso es requerido si vas a necesitar personalizar tu inicio de sesión o tu página de registro, o simplemente agregar cualquiera de estos aquí y cualquiera de estas páginas. Ya verás que en realidad podemos simplemente ver en todos los archivos porque en realidad están ahí, pero no son físicamente accesibles. No obstante, Randall, no me fui a anular todo. Yo sólo me voy a apegar a mis armas y estoy aquí para la página de registro. Entonces eso es todo con lo que realmente quiero lidiar, ¿verdad? Nulo. Y tiran, podemos hacer el login y cierre de sesión y confirmarlo bien, solo estoy aquí para que el cono se registre. Entonces puedo seleccionar que estoy usando mi contexto de datos. Y ya se conoce la música nosotros, nada se impulsa aquí, todavía lo que sea. Y luego solo puedo hacer clic en Agregar. Y una vez hecho ese proceso de andamios, verás que tenemos una nueva carpeta llamada áreas y áreas ves páginas y páginas de identidad e identidad. Se ven estos archivos. Y en un cono está lo que realmente quiera que es registro. Por lo que tantos archivos como habrías andamiado, se habrían generado unbidden colocados a lo largo esa estructura completa también irá a y es un Read Me que realmente no necesita ¿verdad? No. Por lo que solo un rápido inicio de combustible de gira. Simplemente va a decir en qué carga Fei Li Yuan's puedes tener carga múltiple rápido porque en cualquier momento tengas un IRA o una nueva área, puedes tenerla. Usa un diseño diferente a los riesgos del proyecto, ¿no? Bueno, le estamos diciendo que use los diseños generales que se encuentran en el nivel de proyecto compartido, el nivel de páginas compartidas del proyecto. Tenemos vistas importaciones. También tenemos ese tipo de estándares. Entonces cualquier cosa que hubiera sido las páginas estándar ahí es verdad. Está disponible aquí. Entonces eso es todo lo que son. Pero si nos fijamos en la página demo de registro dot CSE, y en términos generales, incluso si estás usando una plantilla de proyecto MVC ya ardió un proyecto en, pero estas páginas que serían estropeadas con fines de identidad generalmente serán Razor páginas, como en páginas HTML CSS, páginas Razor con el código detrás. Entonces aunque estés usando una aplicación MVC en este punto donde definitivamente sobre la pobreza, todo lo que voy a estar haciendo es lo que vas a estar experimentando. Parada completa. Por lo que la página de registro va con el formulario, derecha, Crear conos de Nueva York. Y tenemos todos los campos y la sección sobre embarcaciones, los inicios de sesión externos, todo eso está ahí. Si quieres quedártelo. De no ser así, puede modificar este archivo como desee, por supuesto, dentro de los límites de permanecer funcional. De acuerdo, así que déjame probar toda la redistribución. No voy a meterme demasiado en la pesada explicación de cómo todo está cableado ope ahora mismo, solo quería solo quiero asegurarme de que funcione. Por lo que en nuestro login parcial sepan que tenemos la página de registro. Voy a decirle a dónde apuntar. Por lo que esa URL va a terminar o no etiqueta de anclaje más bien va a terminar luciendo algo como esto. Entonces anclaje etiqueta clase nav link, eso es flecha B es identidad, ¿verdad? Entonces esas son las identidades ero. nombre del área es B área de guión y un SDS-PAGE es registro de barra inclinada. Entonces ahí es donde quiero que vaya cada vez que alguien acuda a la aplicación. Por lo que regístrese. Entonces tomemos esto para dar una vuelta. Entonces en esta página nos pegamos al registro, y ahí vamos. Dónde en la página de registro. Ahora recuerda que habíamos autorizado cada cosa en nuestra app. Entonces eso simplemente significa que registro juramento de la piel a granel con eso una baja inundación anónima justo encima de ella. ¿ Verdad? Una vez más, nos meteremos en los detalles de lo que está sucediendo detrás de las escenas en este momento. Yo sólo quería probar distinto. Entonces admin test. Déjame ver si puedo. De acuerdo, entonces mi contraseña habitual es P en San ss WW ya quiero. No obstante, quería poner una contraseña débil y veamos qué pasa. Entonces sólo voy a poner en la palabra prueba. Aquí lo ves viendo debe ser entre seis y en max1, de 100 caracteres de largo. Por lo que tiene la validación automática ocurriendo. No necesariamente por la política que ponemos, sino por agujero la propia página, aunque las casillas diseñaron. Entonces eso está bien. Simplemente usaré mi palabra de moda larga especial. Y luego la segunda palabra de moda más. Está bien, así que solo te estoy mostrando qué salir de la caja solo generando la página de registro. Todas estas reglas ya se están haciendo cumplir para nosotros. Entonces cuando golpee registro nos va a traer a todos como adoptar confirmar registro 0 página que mencioné. Simulando el despacho del correo electrónico para ayudarnos a registrarnos. Entonces solo adelante y confirme conos. Pero como todo eso no se ha hecho, saltemos a la base de datos y veamos si funcionó. Entonces en la base de datos, me acabo de registrar, debería saber estar en la tabla de usuarios de ASP NET. Y si veo datos para la tabla, ya verás aquí admin test e-mail. Mi contraseña ha sido guardada. Entonces eso no parece que la contraseña que escribo P en San SS, van a ser OID uno. Y mira lo que conseguimos. Oh, está fuera de la caja, ¿verdad? También soy usuario confirmado. Gracias a la simulación. Pero qué hace el Noreste notarás que tenemos los campos personalizados, fecha de nacimiento, nombre completo, apellido. Todos esos están en blanco. Ella. Y parece como si pudiera haber usado el tipo de datos incorrecto en el apellido y lo hice. Y ustedes pueden corregirme. Ah, perdón por eso. Pero mi punto es que el padrón está funcionando. Todo eso está conectado. Hicimos muy poco sobre saber para que funcionara, correcto. Entonces lo que voy a hacer es eliminar esto únicamente porque usé el tipo de datos equivocado para el apellido. Entonces sólo voy a quitar ese campo. Voy a hacer nueva migración y fui a ver campo fijo de apellido. Probablemente no tengas que hacer esto porque probablemente viste mi error antes de que yo lo cometa. Si no, entonces eso está bien. Solo estoy haciendo esto para que pueda asegurarme de que todo esté bien. Entonces ven aquí, hice un cambio a la clase de usuario, agregando migración. Hará las actualizaciones. Y entonces sólo puedo hacer una base de datos de actualización. Por lo que actualizará ese tipo de datos para mí en consecuencia. Bien. Entonces ahora sabemos que nuestra página de registro funciona y eso está bien. Entonces ese es el paso uno hecho. Cuando regresemos, veremos más un barco o un proceso de distribución y veremos en qué otra consideración. Entonces nos fijamos en won, lo que el código está haciendo en realidad en el, en el código detrás del archivo. Cómo podemos ampliarlo para apoyar realmente los campos adicionales que agregamos. Y llegaremos a una comprensión completa de lo que exactamente está sucediendo en general. 11. Implementación de registro seguro: parte 2: Oigan chicos, bienvenidos de nuevo. Antes de seguir adelante con on the sunning, todo sobre una página de registro, solo quería señalar que si estás usando una aplicación MVC y podría haber un tema adicional que necesites hacer para que tu URL realmente ver el pH dentro de las áreas, ¿verdad? Entonces en el sobresaliente visto de por defecto que ha tenido en endpoints y luego eso es todo, extremos sobre controlador MAC. Y luego tienes las carreteras y todo. Necesitas asegurarte de que tienes puntos finales, una fregona, subir el pH es todo alma. Entonces si estás usando un MVC hasta un bonito la línea que dice endpoints dot controller root. Y luego se especifica como una plantilla, hace, crea una nueva línea y pone endpoints up páginas de resultados de mop. Y otra cosa que vas a querer hacer es asegurarte de que tienes servicios, las arterias de las páginas. Por lo que probablemente ya tengas servicios. El controlador se fusionará, ¿verdad? Sí. Eso es probablemente lo que tienes, ¿verdad? Nulo. Digamos que querías asegurarte de que has tenido páginas de Razor. Entonces ese es el otro reto que definitivamente necesitas hacer cono para ponerlo todo en marcha. Entonces después de hacer eso, si antes te encontrabas con dificultad, entonces deberías estar bien. Entonces eso es esto nombra de inflamación para personas MVC todas ahí. No. Echemos un vistazo a lo que está pasando con nuestros registros. Y así sólo voy a cerrar todo lo que no tenga que ver con la actividad inmediata en nuestro padrón. Habíamos establecido que funciona. También establecimos que sólo es pedir el correo electrónico, la contraseña, y la confirmación. Sepa que hay una serie de cosas que podemos considerar. Uno, notarías que el usuario de identidad por defecto tiene el campo de nombre de usuario. También tiene un campo de dirección de correo electrónico, pero sólo estamos pidiendo correo electrónico. Si miras al usuario que se creó después de que nos registramos, entonces verías que nosotros sólo dos. Ah, lo siento, lo he quitado. ¿ De qué habrías notado ese nombre de usuario y correo electrónico, pero los mismos valores, verdad? O para verle valor, eso podría no ser necesariamente lo que quieres. En ocasiones en nuestra página web verás el nombre de usuario diferente a la dirección de correo electrónico. Y todo es un poco diferente Lando y eso está bien. Pero en esta etapa lo que quisiéramos asegurarnos es que estamos capturando todos los campos de la página de registro que necesitamos. Por lo que tal vez sea necesaria la fecha de nacimiento. Nombre, Apellido. A lo mejor el nombre de usuario es diferente de la dirección de correo electrónico por supuesto la contraseña. Y luego ven aquí Sí, Para el número, correcto. Sea lo que sea que necesite del usuario, puede agregar al registro en playa. Entonces digamos que quería correo electrónico. También quería nombre de usuario. Por lo que debes estar familiarizado con las formas enteras están dispuestas o las formas de agujero funcionan en las páginas de Razor. Entonces si tienes que son modelo registrado y entonces lo que pasa es que tenemos este objeto llamado artistas otra clase llamada input, que va a estar almacenando esos diferentes campos que estamos pidiendo. Por lo que tendremos que asegurarnos de que esta clase de entrada tenga todos los campos que estamos pidiendo al usuario en el formulario. Es por eso que ves usar el EM iluminando porque ya no está pidiendo usar. No tiene nuestra representación encendida, fuera del nombre de usuario, pero eso está bien por ahora. Por lo que vamos a estar usando y también la contraseña. Y sólo voy a añadir que campos adicionales para nombre, apellido, y fecha de nacimiento. Muy bien, y para la fecha de nacimiento, voy a especificar que es tipo es tiempo, nuestros datos más bien, para que obtengamos ese control de ventana de color por defecto. Entonces básicamente eso es todo. El conjunto que desea ampliar los campos que están en el formulario. Este es el paso uno. Harás bien representación de los campos que quieras. Ahora. El siguiente paso sería tener realmente la clase de entradas retroajustada a accidentalmente así que solo puedo controlar click en él, salta a las entradas. Por lo que vemos aquí comprando propiedad en ambos modelos. Entonces eso significa que está viendo o-chem rastreando cualquier dato que se ponga en los campos correspondientes para el modelo de entrada tal como lo ven las entradas de objeto. Aquí hay una definición para el modelo de entrada. Entonces ves todo lo que hace es que envíe por correo electrónico la contraseña y confirme la contraseña. Ahí están las validaciones, razón por la cual hemos conseguido esos mensajes de validación sobre la longitud mínima de la palabra de moda, ¿verdad? Y el pie que necesitaban para igualar todas esas cosas están ahí fuera de la caja. Alma, si quisiera extender esto, lo que haría es dejarme sólo copiar una de ellas que están ahí. Muy bien, así que nombre, nombre, esos son nuestros nuevos campos. Nombre para mostrar, nombre. No tengo ningún requisito de longitud y no es un jefe ni un tipo de datos, así que no necesito todo eso. Entonces eso es todo para FirstName. Puedo duplicar eso y hacer eso por su apellido porque esos dos son más o menos lo mismo, ¿verdad? Ambas son requeridas. No obstante, para la fecha de nacimiento, tal vez no se requieran fechas de nacimiento, por lo que pondré en fecha de nacimiento, Putin, el nombre para mostrar. Pero no se requiere y definitivamente no es gran cosa si no se proporciona. Pero solo te estoy mostrando cómo extenderías ese vaso. Conoce cuando vuelvo a la forma o las líneas rojas se han ido porque no, ven los campos. Eso está bien. Ahora cuando golpeamos Registrar caso, entonces Nombre de usuario, está bien, Levantamos todo Nombre de usuario. Déjame asegurarme de que pongo en nombre de usuario. Y también se requeriría nombre de usuario. Y aquí es donde podría ponerse creativo. Podrías decir si quieres un diferente usa un improvisado en, lo contrario usamos el correo electrónico y seguirá plano que puedas conseguir creativo y experimentos. Y creo que el spinning que uso para nombre de usuario es diferente. Ahí vamos. Entonces cuando tocamos el botón de registro en la página, lo que pasa es que eso va a golpear el poste. Entonces en conseguir que se carga la página. Eso está bien. Ah, eso funciona. Y luego verás que tienen diferentes bibliotecas de terceros no son de terceros tienen diferentes bibliotecas que se inyectan, como Administrador de inicio de sesión, Administrador de usuarios y remitente de correo electrónico. El remitente tendrá que cablear ese es dinero salvajemente. Por lo que más adelante haremos eso. También tendrás múltiples libros sobre logger, eso está bien. Pero entre arena y monitoreo de usuario manager, tienes un montón de potentes shuns de espuma y solo funcionalidad general para ayudarte a manipular todas las operaciones relacionadas con EU, TODAS. Entonces, continental lo que sucede en los puestos. Por lo que en post, Nosotros conocimos la devolución eres abogado. Obtenemos los inicios de sesión externos de los cuales no hay ninguno, ¿verdad? Y además no tienes que preocuparte por eso. Pero luego hacemos la validación. La validación es relativa a cualquier regla de validación aquí, eso está bien. Entonces si es válido, entonces construimos nuestro usuario. Por lo que note que estamos viendo usuarios var iguales a nuevo usuario. Si no especificamos que estamos usando una clase especial, entonces habría sido nuevo usuario de identidad, ¿verdad? Lo cual seguiría funcionando. Pero el hecho es que estaríamos limitados a qué campos podemos y no podemos usar. Entonces tenga en cuenta que tenemos la clase de usuario usando, puedo decir ¿cuál es el nombre de usuario? Aquí es por qué nombre de usuario y correo electrónico obtuvieron el mismo valor porque por defecto tienes que proporcionar un nombre de usuario, tienes que proporcionar un correo electrónico. Y lo que hace el código predeterminado es establecer el correo electrónico como ambos. Entonces ahora que hemos extendido nuestro formulario para realmente pedir nombre de usuario, puedo saber decir que el nombre de usuario está en nombre de usuario, correo electrónico es input dot email. Y entonces puedo hacer eso por todos los demás campos. Por lo que fecha de nacimiento, fecha de nacimiento no es insumos. Pensado en el nacimiento, etc. Así que acabo de hacer eso por apellido y nombre y fecha de nacimiento es dar un error porque lo dije, cuerda 1, debería ser. Entonces, después de hacer ese ajuste, solo podemos revisar todo nuestro objeto de usuario. Entonces eso es lo que pretendemos almacenar. No, usarás una de nuestras bibliotecas llamada User Manager. Vamos Baco, esto se usa para mantissa y se está inyectando en. Por lo que cortesía de la biblioteca de identidades IL-4, obtenemos este objeto gestor de usuarios o biblioteca que tiene una función sencilla que nos permite crear, qué estamos creando donde crear un usuario y les estamos dando esa contraseña. Entonces recuerda que habríamos escrito esa contraseña en texto plano. Pero para cuando este método esté terminado con, lo habría silenciado hasta el punto en que sería completamente irreconocible como en qué alfa, el mismo jefe o siempre se verá diferente en la mesa porque yo siguió este método hashes la postura. Por lo que el hashing es un procedimiento muy importante donde oscurecemos la presentación de la contraseña para el almacenamiento. Y siempre es una operación unidireccional por lo que no quieres en contraseñas hash, has hash contraseñas, y luego hachas otra cadena para comparar con el silencio original, ¿verdad? Entonces oscureciste una contraseña. Y luego cuando la persona llega al inicio de sesión, oscureces lo que han escrito y temblorosa ambas versiones oscuras fuera que toma se parecen. Si no lo hacen, entonces falla. Bueno, no quieres en duro lo que se almacena en la base de datos para luego comparar. Muy bien, así que el hashing es un protocolo de seguridad muy importante que oculta o contraseñas. Está bien, Entonces después de esos, esto, esto puede o no haber tenido éxito y luego si se decía que un resultado puntos tuvo éxito, entonces se registrará, ¿de acuerdo? Sí, bonito. Y el inicio de sesión es muy importante para aplicaciones o herramientas basadas en seguridad. Seguridad off aplicación por cierto. Por lo que estarás viendo esto un poco más de inicio de sesión más adelante. Lo que hicieron esos es generar un código token. No, podemos cambiar al manager de Tolkien, lo que significa que podemos usar nuestro propio cuerpo porque usamos la identidad por defecto. Estamos usando el motor de tokens predeterminado. Y que Tolkien es básicamente sólo ese hecho, callar, callar cuerda. Verías al final de una URL arriba, obtienen ese email de confirmación. Haga clic aquí para confirmar o haga clic en la URL. I is is is is is url www_website.com slash esta larga combinación alfanumérica. Eso es lo que esto hace es que genera el código para nosotros relativo a la inflamación que proporcionó el usuario. Y luego lo codifica y luego envía arte crea una URL. Entonces dice callback URL es esta página, ¿verdad? Y está agregando esos valores al correo electrónico que se enviará eventualmente. Entonces como dije, vamos a ser cableado tops con realmente despacha ese correo electrónico. Pero quiero que aprecien todo lo que está pasando aquí mismo. Entonces todo esto genera ese Tolkien para ti. Y luego envía ese correo electrónico. Y luego si usa un manager dot opciones fichaje requieren confirmados nuestros conos, entonces redirige a ese ritmo. Entonces note que esta es una Piazza que no creamos, pero solo al agregar identidad por defecto, en realidad fue a esa grande, ¿verdad? No lo creamos, no hemos creado el suyo propio. Sólo hemos scuffle a una, pero una vez más, porque has agregado identidad predeterminada, esa interfaz de usuario está implícita en nuestro proyecto. Sólo si necesitamos modificar algo, entonces necesitamos realmente generar esa página física como lo hemos hecho para el registro. Entonces bien, no, siempre leerá a Erich a ese ritmo. Entonces, cuando configuramos nuestro mecanismo de correo electrónico, en realidad podemos simplemente eliminar esta parte del mismo. Y luego podemos simplemente redirigir a la forma en que podemos firmar en la persona u otra, y luego redirigir a la URL de retorno. Entonces eso significa que si la persona estaba en la página de categorías y luego hizo clic en registrarse, sabemos que la URL de retorno, sabemos cómo funciona eso por nulo. ¿ Todo bien? Pero el administrador de inicio de sesión es otra variable para biblioteca que está más cerca del signo en este usuario, estoy decidiendo manager realmente crea esa cookie, les da las reclamaciones como almacenadas en la base de datos y autentica a ese usuario en conjunto. Entonces estamos viendo un poco más de eso cuando nos metemos en la parte de inicio de sesión de nuestras actividades. Entonces eso es básicamente lo que está pasando cuando hacemos clic en Registrarse. Todo ese código puede parecer simple. El arte es sencillo y se hace muy sencillo por estas bibliotecas ayudantes que nos brinda el conjunto de herramientas identitarias. Pero es un proceso muy, muy complejo en el cubo. De acuerdo, entonces si todos esos fallan y el usuario, él, si no tuvo éxito, son los Federales y válidos. Simplemente va a seguir adelante y compilar todos los errores y devolver la página. Entonces lo que voy a hacer es probar a madre o distribución solo para asegurarme de que todo siga funcionando. Tan nula en nuestro registro. Entonces no seas AGC aunque tenemos todos los campos que teníamos específicos. Muy bien, Así que en lugar de nombre de usuario aquí, estoy dispuesto a decir admin, admin test.com. El nombre es admin, el apellido es test, y luego la fecha de nacimiento. Simplemente elige el día. Y luego mi contraseña especial, que es p en San assist alelo o D1. Y solo repite eso. Y luego podemos golpear registro. Y nos redirigen a esa confirmación de registro. Sepan qué es todo esto de ese token. Si miras esta URL, si solo pasas por encima de ella y miras la URL que aparece, verás que todo lo que viene después del ID de usuario es igual, es decir, bueno, ese es el ID de usuario en la base de datos más bien. Y luego verás que tienes un ampersand, luego la palabra código, y luego todo eso después del código es ese Tolkien, ese LC y se genera, ¿verdad? Entonces no hicimos nada de eso, todo eso fuera de la caja. Entonces acabo de confirmar un cono y eso está bien. Entonces ven aquí es esa cita que mencioné todo ese código Tolkien que se generó. Entonces déjame probar otra una distribución en, en realidad voy a usar el usuario de costura. Y yo, yo solo, solo estoy forzando un error para mostrar lo que sucede cuando se violan ciertas restricciones. Está bien, así que usando las mismas cosas, verás aquí, dice nombre de usuario admin ya está tomado. Entonces cuando generó esa lista de errores aquí, eso significa que el resultado no fue exitoso porque intentó crear. Pero luego basado en las restricciones econs off a usos con el mismo nombre de usuario fuera de la caja. Hay ciertas restricciones, ciertas cosas que nos dirá cómo obtenemos retroalimentación háptica. Podemos tuitearlos a medida que avanzamos. Podemos crear nuestro usuario personalizado gestiona reglas de autenticación personalizadas, todo lo que necesitamos. Podemos hacer una identidad de extensión como necesitemos. Entonces cuando volvamos vamos vamos a echar un vistazo a lo que se necesita para configurar esa confirmación de correo electrónico para que cuando nos registremos, podamos ver realmente ese correo electrónico, por así decirlo. 12. Implementación de Verificación de correo electrónico para el registro: Muy bien chicos. Entonces estamos de vuelta. Queremos configurar nuestro remitente de correo electrónico y todo el envío de ese correo después de que el usuario se registre, aquellos que están lejos en producir las tasas de éxito de la metoxi pequeña 1 y 2. Sí aumenta el nivel de seguridad y poco trae una autenticación de dos factores en Kindle para el régimen. A pesar de que no es la opción más segura, sigue siendo sí trae ese nivel de seguridad. Entonces definitivamente vamos a ver cómo se implementa. Y por extensión en aquellos que tienen al remitente de correo activo y en ejecución para registrarse, notarías que hay otros procedimientos como el restablecimiento de contraseñas. A pesar de que las dos cosas que nuestros correos electrónicos se van a despachar y estaremos configurando remitente de correo en relación con nuestra tarea actual, que es registrar bien a nuestro usuario, este email remitente interfaz de correo electrónico se puede acceder en cualquier lugar. Siempre puedes simplemente ir y registrarlo de la forma en que lo voy a registrar más bien en startups para que se pueda utilizar en cualquier otro lugar. De acuerdo, así que veamos lo que se necesita para conseguir este ingreso abierto. En primer lugar, después fue a crear una nueva carpeta. Y voy a llamar a estos servicios. Y en servicios vamos a sumar una nueva clase. Y voy a llamar a esta clase solo remitente de correo electrónico. Está bien, así que tenemos nuestro remitente de correo electrónico de clase y él va a heredar del remitente de correo electrónico. Por lo que este remitente de correo electrónico va a implementar el método enviar correo electrónico asíncrono. Entonces eso definitivamente es lo que necesitamos. Antes de ir más lejos, quiero registrar esto en la startup. Por lo que quería asegurarme de que la aplicación sepa que tenemos este servicio funcionando. Entonces voy a decir servicios dot add, transitorio. Y estoy viendo que me remitente de correo electrónico se va a implementar por remitente de correo electrónico. Y luego agregamos cualquier faltante o por ejemplo, peor. No, voy a dejar esto aquí por ahora, pero definitivamente voy a revisitar eso porque creo que para cuando terminemos aquí habrá que escribir esa línea de manera diferente. Entonces no hay problema. Entonces lo que voy a hacer en el I-beam en la clase de remitente de correo electrónico es configurar algunos campos para nuestro servidor o puerto en nuestra dirección. Alguien para estar usando SMTP como sentadas. Entonces para esta actividad sin embargo, como Oh, estamos en un entorno div y no todo el mundo podría tener acceso a un servidor SMTP y así sucesivamente. Lo que vamos a estar usando es servidor SMTP host local. Y vamos a estar buscando suficiente uso. Entonces para null tenemos los campos. Por lo que tenemos los campos para servidor SMTP, puertos SMTP encendido desde dirección de correo electrónico. Y luego tengo un constructor que inicialmente los está inicializando para que puedas pausar y replicar eso. Ahora en el Enviar Email está viendo atrapado, voy a hacer es construir un mensaje. Así que decir var mensaje z igual a un nuevo mensaje. Por lo que nuestro nuevo mensaje de correo. Y eso va a requerir del sistema dotnet dot masculino biblioteca. Y dentro de ese mensaje de correo, podemos configurar el desde los sujetos del cuerpo y el cuerpo tiene razón. Para que podamos armar todos esos. Porque Enviarme poner un fregadero es un esperando los de cualquier escaldar. Por lo que tenemos toda esa información disponible herramientas. Nos vamos a código duro o desde dirección de correo electrónico porque en términos generales, enviarías desde como yo no respondo a son no repetición, algo así. Realmente no importa. Las reglas de negocio difieren. Simplemente estamos pasando por una configuración básica. Ahora después de todo eso, vamos a configurar el mensaje dot add y estamos agregando una nueva dirección de comida para la dirección de correo electrónico a la que se espera que se envíe. Y luego vamos a invocar a un cliente SMTP usando el servidor SMTP y los valores de puerto que se habrían pasado a través del constructor y será un despachando ese mensaje al aire libre. Tan solo regresaremos que la tarea ha sido completada. Entonces eso es lo básico del teléfono móvil, remitente de correo electrónico usando SMTP. Y todo lo que sí dije que vamos a estar haciendo todo localmente usando nuestro propio SMTP. Entonces lo que voy a hacer es modificar este archivo de inicio y r, lo siento esta línea en la startup. Y lo que voy a hacer es agregar transitorio y hacerle saber que el prestador de servicios, Así como lo que S aquí representa el prestador de servicios. Para que te pueda hacer saber que va a ser nuevo remitente de correo electrónico. Y luego el remitente de correo electrónico toma ese servidor SMTP como primer parámetro. Muy bien, entonces diremos host local o lo que sea el servidor SMTP que estás usando. Algunas personas en realidad pondrían eso dentro del archivo de configuración de la aplicación y luego llamarían a la configuración. Hay tantas maneras de hacerlo. Estaremos usando el retrato por defecto es 25. Y luego la dirección de correo electrónico, sólo voy a decir que no hay respuesta. Classified.com. Ahí es donde se espera que se envíe el correo electrónico. Entonces eso es básicamente como se va a ver esto en la startup. Ahora vamos a llegar a nuestro servidor SMTP. Entonces vamos a estar usando este servidor Luca SMTP llamado papel, que se puede llegar a un corte de papel dot dash smtp.com. Y se duplica como servidor SMTP y visor de correo electrónico. Entonces es una herramienta realmente útil para el desarrollo, con estilo donde solo te quieren ver, ¿funciona este mecanismo de correo electrónico? Estoy viendo lo que necesito ver en pruebas, ¿verdad? Para que puedas seguir adelante y leerlo si quieres. Pero para anómalo interesado en descargar el último lanzamiento. Por lo que lo están hospedando en GitHub, solo podemos descargar. Y una vez que la configuración esté en marcha, posible que se te pida que pases por esos. Por lo que solo puedes seguir adelante e instalar. Y una vez que eso se haya completado con éxito, puedes seguir adelante y abrirlo en tu máquina para que solo puedas pulsar Inicio, Buscar cortes de papel y una ventana similar a ésta debería aparecer. Es posible que también necesites liberarte en el firewall así que permite el acceso para que sepa que mi máquina sabe confiar en esta aplicación. Muy bien, entonces así es como se ve el administrador de correo electrónico. Pero una vez más, se está duplicando como SMTP. Entonces tomemos esto para dar una vuelta. Por lo que solo estoy llenando mi página de redistribución con algunos datos de prueba y luego me limitaré a golpear registro. Por lo que como de costumbre, estamos navegando hasta la página de confirmación del registro. Correcto. Por lo que dice, por favor revise su correo electrónico para confirmar conos de Europa. Entonces note que ya no va a ir a esa simulación. Si miro en el sistema de coordenadas hacia la página de registro rápidamente, ¿qué era? Dijo que se va a despachar a ese remitente de correo electrónico y luego se ve si las opciones requieren confirmados nuestros conos, luego acude a registrar confirmación. Eso está bien. Todo eso, Eso está bien. Pero si salto al pago por clic, ven aquí que tenemos el correo electrónico. De acuerdo, por favor confirme su artículo y haciendo click aquí, bueno eso es exactamente lo que dijeron. Por favor, confirme sus columnas haciendo clic. Y luego tenemos la etiqueta de anclaje con la codificación HTML de nuestra URL de devolución de llamada y el código Tolkien. Y todo eso a ver pinchando aquí, ¿no? Entonces eso es básico lo que eso trae a la mesa. Entonces sí, podemos probar el correo electrónico y todo lo que vemos que funciona, cómo exactamente funciona, tanta información como quieras presentar al usuario, ¿verdad? Ahí es donde harías eso. Por lo que sólo voy a ver click aquí. Él navega y luego dice: No estás confirmado. De acuerdo, ¿cómo sé si realmente estoy confirmado o no? Podemos simplemente saltar de nuevo a nuestra base de datos como levodopa aquí. Si actualizo y miro a todos los usuarios. Entonces aquí está este usuario reciente. Aquí verás que el correo electrónico está confirmado. Entonces esa es la que acabo de confirmar vía e-mail. Y nota una vez más con las contraseñas los tres jefe o es diferente? Bueno, son lo mismo. Estar a decir Este es el azul o ID1. Está bien. Entonces creo que eso es todo por no. Entonces como dije, estos remitentes de correo electrónico van a ser utilizados en múltiples lugares para múltiples pruebas y situación. Perdón, déjame sólo agarrar mis cojinetes. Por lo que este remitente de correo electrónico enviará correos electrónicos para su distribución, confirmación para Olvidé Contraseña, y para cualquier otra cosa que necesite. Por lo que una vez que tengas este servidor SMTP cortado en papel en ejecución, siéntete libre de probar esos correos electrónicos en cómo se van a ver en diferentes configuraciones y situaciones por todo el lugar. 13. Consideraciones adicionales de contraseñas: Bienvenidos de vuelta chicos. Por lo que estamos pasando por configurar nuestra distribución e implementar la seguridad. Y hemos analizado brevemente algunas de las opciones de seguridad que están como construidas en la identidad que podemos simplemente poner en canalización. Conoce la cosa es que el tema recurrente de orden con identidad es extensibilidad porque no todo el tiempo, obtendrás las opciones por defecto que satisfagan tus necesidades específicas, tus necesidades de negocio o lo que sea que quieras lograr. Estos son finales de los bultos hasta cierto punto. Bueno 20 solo quieren ir justo ese pequeño filo más. Es posible que tengas que escribir algunas extensiones. Por lo que en esta lección vamos a estar buscando agregar seguridad adicional de contraseña. Y esta seguridad de contraseña adicional podría estar impulsada por cuál es tu visión qué contraseñas seguras deben estar en tu organización en particular o en tu configuración particular. Por lo que a nivel mundial sabemos que queremos requerir dígito así sucesivamente. Nada menos que ocho personajes de largo, sí, mayúsculas y todas estas cosas. Seguro. Pero entonces y si quisieras asegurarte de que palabras clave específicas no estuvieran en su vida tal vez ni el nombre de la empresa, o incluso el usuario. A veces los usuarios usan su propio nombre como contraseña, cosas así. En realidad podrías ayudar a mitigar contra las ciertas cosas que, que al escribir tus propios métodos personalizados son funciones. Entonces la cosa es que en este punto los servicios dot identidad predeterminada habíamos agregado en las tiendas Add Entity Framework cómo le dijimos que usara los contextos DVI. Pero en realidad podríamos sumar más a este ducto. Entonces sólo voy a quitar ese punto y coma y fui a la línea para que podamos ver dónde empieza y se detiene cada uno. Y luego debajo de esa podría decir punto. Y si miras lo que obtienes, ves que tienes algo de Parte dos kilo, déjame solo decir datos financiados, déjame empezar a escribir valida y para que puedas agregar una validez de contraseña puedes agregar un validador de reglas, usuario de Canadá validador. Si quieres escribir métodos de extensión, que es lo que vamos a hacer para la canalización de contraseñas o la tubería de validación. Es tan fácil como simplemente meterlos en el servicio de identidad que estás agregando. Simplemente puedes agregarlas. Por lo que cualquier cuota personalizada que necesites escribir, o si quieres usar tu propio proveedor Tolkien, tienda de usuarios de heroína, sea lo que sea, porque puede que no necesariamente estés usando la base de datos fresca como nosotros. Puede que tenga una base de datos y se quiera utilizar su propia tienda. Todas esas cosas son posibles. Entonces voy a hacer el validador de contraseñas. Y aquí voy a tener clase que alguien para llamar al servicio de validador de contraseñas. Por lo que solo le das la clase que pretendes usar o crear. En nuestro caso, vamos a crear esto. Ya lo tengo creado, así que está bien. Puedes seguir adelante, hacer el botón de clase ahí. Y luego agregué una nueva carpeta en la entidad Add y puse esa clase ahí. Por lo que solo puedes seguir adelante y hacer eso. Y más o menos eso es un patrón para cualquier otra personalización o extensión que quieras agregar a ese ducto de identidad. Entonces cuando salto a esta clase, las características de marca registrada de esta clase estándar CSS, pero está heredando de i validador de contraseñas con los contextos de nuestra clase de usuario personalizada. Por lo que fomenté validador viene de nuestra carpeta de identidad Microsoft dot ASP NET Core, o lo siento, biblioteca. Y el usuario proviene de nuestro espacio de nombres de entidades. Para que puedas seguir adelante y teclear ese punto de control no utilizado incluye las referencias faltantes. Una vez que hagas eso, se te requerirá implementar el rostro del usuario, lo que te da este método llamado validar un sumidero. asíncrono financiado toma el gerente así como el objeto de usuario y la contraseña a medida que se están creando durante el proceso de registro. Entonces seguí adelante y puse algún código de muestra en cuanto a lo que podría pasar por aquí. Solo estoy viendo si la contraseña cumple con esta condición y si no quieres eres tienes todas tus condiciones, sea cual sea, pasas contraseña a través de tus cheques y equilibrios. Si no cumple con la marca. Él sus reglas de negocio porque sólo llegará tan lejos si la contraseña RD MIT estos requisitos. Entonces si cumple con estos requisitos, entonces va a ir aquí abajo y decir, está bien, déjame seguir escrutando esta contraseña en base a lo que el negocio quiere. Entonces los negocios quieren, si no cumple con esos requisitos adicionales, entonces vamos a devolver punto de tarea a partir de resultados y resultados de identidad. Entonces este método toma resultados de identidad, ¿verdad? Porque eso es lo que esto está regresando. Entonces estamos para devolver ese resultado de identidad y fallar que toma una matriz de errores de identidad. Por lo que podrías simplemente compilar esa área, compilar el área, compilar áreas tantas violaciones como tengas tu compilar esa área, agregar un nuevo error de identidad por violación, y luego finalmente terminar con ese resultado. Devolver campo de resultado de identidad con tal vez toda la matriz de errores. Esas son las áreas que se muestran en la página Registrar como los errores, viendo por qué no se puede registrar. Entonces recuerda que cuando intentamos registrarnos si no pusimos una contraseña lo suficientemente fuerte o se tomó el nombre de usuario, se rebotó y dijo, hey, esto está mal. Así que más o menos errores de identidad. Eso es lo que se va a mostrar en la página. Una vez este aguinaldo. Si todo está bien sin embargo, entonces simplemente devolveríamos el resultado de identidad punto éxito. Que si volvemos a la página de registro, verás mucho de eso pregunta si un resultado puntual éxito. Entonces el resultado de mí tratando de crear este usuario si es exitoso, entonces proceda. De lo contrario, mostrar los errores que regresaron del resultado. Entonces eso es todo lo que está pasando aquí mismo. Por lo que he reajustado este método para conducir a casa mi escenario que acabo de pintar. Entonces digamos que tenemos un montón de cosas que estamos buscando. Voy a empezar iniciando una nueva lista de errores de identidad. Entonces tengo las diferentes formas. Entonces una comprobación podría ser que si la contraseña contiene el nombre de la empresa, entonces se agrega una identidad, ERCP y que el código es nombre de la empresa, cuál es la descripción, que es lo que realmente imprimiría en la página al usuario, es que no debe contener el nombre de la empresa, ¿verdad? Y aunque uno, si contiene un nombre o el apellido que está ingresando el usuario, entonces nosotros buzzword, no podemos o no debemos contener tu nombre. Este usa más correo electrónico. Tampoco quieres que metan eso. Pones un mensaje apropiado. Por lo que después de todos estos cheques, solo será agregando nuevos errores, agregando nuevo Eris a la lista. Y luego si al final de la misma realmente tenemos errores en lugar de lista, entonces queremos devolver que falló y queremos convertir esa lista una matriz. ¿ Por qué haría eso? Porque recuerda que está asumiendo IRI de error de identidad. Por lo que teníamos una lista compilando. Simplemente lo convertimos a una zona de último minuto para mandar buck con la falla. De lo contrario, fue un intento exitoso de creación fomentado. Por lo que en este punto a la comida, así sucesivamente a considerar la integración con servicios de terceros. Una vez más, depende de tus reglas de negocio, así que solo te estoy dando las ideas. Pero sí tienes servicios de terceros ahí que te ayudan a determinar la fortaleza de las contraseñas en relación con cuántas veces estas contraseñas podrían haberse infringido en el pasado. Ejemplo tan típico de tal servicio sería PEW 100.com, PWN ED.com. Y en realidad te dicen como, vale, esta contraseña ha sido violada. A lo mejor yo becarios en tiempos pasados. Por lo que no quieres que tus usuarios estén usando símbolo de brecha. Las contraseñas son posibles. Se sabe que los resultados son vulnerables como contraseña RP a signo como sístole o ID1 como estoy usando, derecha. Por lo que podrías integrarte con otras partes o servicios de terceros En ese momento para que todo tu flujo de trabajo de validación sea más hermético, divertido, aunque eso es básicamente todo. Acabamos de extenderlo para que le den una carrera rápida. Muy bien, así que aquí están solo durante un nuevo usuario. Y lo que voy a hacer es poner la contraseña, asegurarme de que cumpla con la longitud mínima. Lo que voy a poner en la palabra prueba. ¿ Está bien? Y yo voy a hacer lo mismo, no oigan. Y no estoy seguro de si esto funcionará correctamente porque no estoy haciendo sensibilidad de mayúsculas y minúsculas, así que definitivamente voy a necesitar una modificación. Por lo que el código para asegurarse de que hace una comprobación sensible a mayúsculas y minúsculas para las cadenas. Pero yo sólo quería ver qué va a pasar. Por lo que no se ejecuta en modo de depuración, cuando hago clic en Registrarse, ve aquí contraseña no debe continuar su nombre. Entonces es rebotar buck con esa misma era en la que simplemente nos sentamos. Muy bien, así que pausa todo lo demás pero falló en las medidas más estrictas que hemos puesto en marcha para que sea realmente más simple, para ampliar la funcionalidad de los Servicios de Identidad. 14. Fundamentos de registro: revisión de la sección: Muy bien chicos, Así que estamos listos para cerrar esta sección o módulo. Y creo que hemos hecho algún trabajo en particular aquí. Por lo que hemos agregado identidad a nuestro minuto de proyecto ampliamos la clase de usuario creando nuestra propia clase, encontrándola heredada de identidad usuario. Podemos poner en nuestros propios campos personalizados. Después de hacer todo eso, teníamos que al contexto DB saber que cada uno debería estar usando el contexto de la base de datos de identidad en contraposición a contextos irregulares de DB dentro del alcance de lo que ofrece nuestra nueva clase de usuario. También tuvimos que asegurarnos de que pusimos en esta base en la creación de modelos porque vimos la era que tenemos con niños mayores. Además de eso, hicimos nuestra migración, que nos dio un archivo de migración adicional que creó todas esas tablas relacionadas con la identidad para nosotros en la base de datos. Ahora en este punto, son probablemente deberían haber mencionado esto antes, pero hay momentos en los que puede que desee mantener una tienda de usuarios diferente de la base de datos transaccionales real. Y ese punto, sería tan fácil como crear un contexto de base de datos diferente y darle su propia cadena de conexión en el área de startup dot cs, ¿verdad? Por lo que tendrías dos de estos, uno para los defensores en contextos DVI, en 14 para identificar contextos DVI, podrías estar usando un nombre personalizado. Entonces eso está bien. Bueno entonces por supuesto la diferente cadena de conexión es donde te estarás diciendo que uses esta base de datos para ese propósito. Y entonces probablemente podrías hacer BK que luego cómo algo así como identidad, conexión DB, y luego le das su propia cadena de conexión. Entonces solo estoy, solo estoy compartiendo cosas diferentes contigo porque podrías estar mirando todos los proyectos y UCI, diferentes contextos DVI para cosas relacionadas con el usuario. Y entonces incluso entonces, incluso cuando usan el mismo data store, a veces las personas pueden separar los contextos DVI de la aplicación, Esos son los datos irregulares, datos de manera diferente a un contexto DVI basado en la identidad. Sólo lo estoy demostrando aquí. Por lo que los contextos DVI de usuario. Por lo que este seguiría siendo contexto DB. De acuerdo, bueno entonces el otro sabría heredar del contexto de la base de datos de identidad, y no necesitaría ningún conjunto de bases de datos porque toda la caja, no hace nada más que manejar cosas basadas en identidades. Entonces puedes ver cosas que Eso es yo solo estoy compartiendo diferentes matices son cosas diferentes que podrías correr a medida creces y desarrollas más proyectos para que tengas una comprensión y aprecio por uno cuando podrías terminar haciendo ciertas cosas. Está bien. Entonces fuera de eso sin embargo, miramos a todos andamios o áreas y andamiamos o registramos página. Ampliamos el formulario para tener campos adicionales relativos a nuestra clase de usuario personalizada. Miramos el archivo de registro y las únicas modificaciones que teníamos que hacer realmente o simplemente para asegurarnos de que estamos capturando esa información adicional en nuestro objeto de usuario antes de que el usuario sea creado. Tenemos que implementar nuestro remitente EMEA. Entonces como, oh, tenemos a ese remitente de correo pasando. No, en realidad podemos simplemente bien, podemos dejar todo ese código hace es que eso está bien. Por lo que sólo redirigimos a la mayor de la confirmación. No tenemos que molestar nada de eso. Pero implementamos nuestro remitente de correo electrónico justo aquí. En correo electrónico remitente lo pone en una carpeta de servicios. Dijimos que nuestra configuración SMTP y en el fin de semana de inicio de hardcoded esos valores. Entonces en su lugar estamos usando host local, que podría ser fácilmente intercambiada por su servidor SMTP real. Estamos usando el puerto y este es el correo electrónico desde el que se está enviando todo. Y para las pruebas, habríamos configurado nuestro papel llamado SMTP. Fuera de eso, agregamos nuestra identidad predeterminada. Miramos la foto que podemos poner en nuestras reglas personalizadas para cómo se valida la información del usuario al momento del registro. Y diferentes restricciones, nuevamente puestas en ese nivel, tenemos que asegurarnos de que agregamos las tiendas Entity Framework. Y también miramos que necesitamos agregar páginas de Razor. Si estás usando una aplicación MVC así como en los puntos finales para las páginas Razor. De acuerdo, así que con todo eso dicho y hecho, solo vamos a hacer un check-in rápido y siempre asegurarnos de que tu mensaje sea lo suficientemente claro. Y entonces podemos hacer y hundirnos. Ahora cuando regresemos, empezaremos a mirar algo más de autenticación y autorización, pero dentro del contexto de la identidad. Por lo que estaremos viendo cómo apoyamos la funcionalidad de inicio de sesión. Olvidó la contraseña, todas esas maravillosas características. 15. Fundamentos de iniciar: descripción de la sección: Muy bien chicos, Así que estamos saliendo de los talones o configurando nuestra funcionalidad de distribución. Y en esta sección vamos a tipo de enfocarnos en la autenticación. Entonces eso es configurar el inicio de sesión, mirar la seguridad de contraseñas, mirar Gestión de sesiones o administración de cookies usando identidad. Todas esas cosas maravillosas que estaremos viendo. Estaré echando un vistazo más profundo a las bibliotecas de terceros que administrador de usuarios bajo inicio de sesión Monitor y cómo podemos implementar la autenticación multifactor. Entonces quédese por ahí, vamos a divertirnos mucho en esta sección. 16. Implementación de la funcionalidad de inicio de sesión: Muy bien chicos, entonces en esta lección vamos a estar mirando la funcionalidad de inicio de sesión. Por lo que ya configuramos o una distribución sobre cosas y somos capaces de conseguir un usuario creado en nuestras escrituras de tienda, no, realmente necesitamos hacer el login. Entonces antes, no, en realidad habíamos implementado login usando nuestra página de inicio de sesión personalizada y nuestro código personalizado, que estoy seguro que ambos podemos estar de acuerdo, no era muy seguro. Lo que hizo fue aceptar la entrada del formulario y lo probamos manualmente contra algo que imaginamos que sería correcto. ¿ Queremos ser correctos? Obviamente, en una situación del mundo real, los usos se almacenan en la base de datos en cuando vienen a iniciar sesión, vienen a autenticarse en el up. Y necesitamos verificar su existencia y la exactitud de su contraseña en la base de datos. Entonces lo que vamos a hacer para obtener un mecanismo de inicio de sesión real es confiar en el código de inicio de sesión que nos proporciona la identidad. Por lo que podemos hacer clic derecho en un Conos similar a lo que hicimos con nuestra página de registro y podemos ir a nuevo artículo rayado. Después saltamos a la identidad, a la identidad sexual. Y después de que haya terminado su procesamiento y obtenemos este cuadro de diálogo, vamos a seleccionar la página de inicio de sesión. Entonces tenemos login y bueno, logo, así que solo voy a seleccionar ambos en este punto. Muy bien, así que una vez que hago eso, sabemos que seleccionamos nuestros contextos de datos y luego presionamos Add. Está bien, entonces me estoy encontrando con este error. Puede que no lo encuentres. Pero si lo estás encontrando, entonces vamos a trabajar a través de ella juntos. No, creo que se acerca este error debido a la brecha potencial de versionado que hubiera mencionado antes. Entonces sólo voy a cancelar esto. Y podemos saltar al gestor de paquetes NuGet para ese proyecto web. Y si echamos un buen vistazo, estoy bastante seguro de que van a ser algunas actualizaciones aquí. Ese es nuestro pendiente. Está bien. Entonces la cosa es que cuando el versionado está desalineado entre algunos de los paquetes, entonces todo lo demás estará fuera de alineación. Si no me equivoco, al menos uno de estos es Ahí vamos. Por lo que este fue actualizado. Yo no lo hice personalmente. A veces sucede. No lo sé. También se instala después del hecho, pero sin embargo, así es como lo vamos a resolver. Entonces solo voy a seleccionar todos los paquetes y dejar que todos se actualicen. Y lo que en realidad podría haber hecho fue bueno para toda la solución para asegurarme de que todos los proyectos estén en la misma página. Entonces un poco fuera de tema nulo, pero en realidad podemos hacer clic derecho en la solución administrada y obtener paquetes para la solución. Y eso nos permite mirar los proyectos individuales y las versiones que están usando. Entonces cuando obtengamos la lista de paquetes y hacemos click en cualquiera de estos paquetes veremos los dos proyectos o tantos proyectos como tengas. Y si está en una y no en la otra, verás que no está instalada. No obstante, para la luz en diferente, somos un núcleo, está en ambos, pero uno está viendo cinco puntos 10. Uno está diciendo que 5.11 es en términos generales, es bueno sólo tener todo en los mismos niveles. Así que voy a seguir adelante y hacer clic en ellos uno por uno y me aseguraré de que todos estén en la misma versión. Ahora, un poco fácil hacer esto también es simplemente ir al archivo CS Bridge. Y yo sólo puedo cambiar estos a 11. Entonces sé que vivimos es lo que necesitan ser estos. Simplemente pasa por todos ellos o podrías haber hecho el gestor de paquetes NuGet. Y aunque hay tantas maneras, pero una vez que haces una compilación y se ha reportado exitosa de lo que sabes, estás en el buen camino. Entonces, después de todo eso, intentemos de nuevo esto. Por lo que un Koen News estropeó la identidad del artículo. Adelante y seleccione nuestras nuevas páginas y nuestro contexto DV y agregue. Y cuando todo eso esté hecho, ahora tenemos nuestras nuevas páginas para fines de inicio de sesión y cierre de sesión. Entonces echemos un vistazo a la página de inicio de sesión y todo el dinero o la página de inicio de sesión que creamos en realidad se ve muy similar a la página de inicio de sesión de andamios. Excepto notarás que se están inyectando algunos servicios más, en términos del administrador de usuarios, en el gestor de inicio de sesión, hemos visto esas dos bibliotecas en la página de registro. Y notarás que aquí hay pocas otras cosas que no incluimos. En última instancia, tenemos el mismo modelo de entrada que toma la dirección de correo electrónico y la contraseña. Y entonces esto podría modificarse si quieres tener como un nombre de usuario y contraseña login, entonces obviamente pedirías que el nombre de usuario es el del correo electrónico, por lo que puedes modificar eso si lo deseas. De lo contrario, tenemos el En-Gedi, que básicamente quiere saber ¿hay un mensaje de error que debería mostrar? No. Está bien, bien. El URL de devolución es, y luego hace disposiciones para las bibliotecas de inicio de sesión externas o servicios de inicio de sesión que pudieran haberse incluido. Ese es el Facebook y Google, etcétera. Entonces no vamos a pasar por esos todavía, sino a la altura de preocuparnos por eso. No obstante, en post, Aquí es donde más cosas sucede realmente la magia. Entonces en post estamos haciendo algo así como bien, sabemos de una URL de retorno y los inicios de sesión externos, Eso está bien. Si el estado del modelo es válido y validez una vez más, se basa en estos atributos son anotaciones más bien que el modelo tendría. Si todo es válido, entonces usamos el inicio de sesión Gerente. No aviso no estoy haciendo una base de datos llamada ni siquiera está haciendo una base de datos llamada arte, no explícitamente porque el administrador de inicio de sesión está lleno de métodos en uno de ellos es el inicio de sesión de contraseña asíncrona. Por lo que este método por sí mismo va a ir a la dirección de correo electrónico y a la contraseña que se ha proporcionado. Se va a ir a revisar la base de datos en la tabla de usuarios de ASP NET. ¿ Puedo encontrar un registro coincidente? Sí, puedo. Está bien. No. Armados con la flor para recordarme o no, vamos a crear la galleta, ¿verdad? Y en realidad firmó a la persona en. Entonces esta única línea básicamente va a hacer todo eso y defender la original. Todo esto construyendo el reclamo, configurando ese usuario de entidad, el principal y luego iniciando sesión. Todo esto es capturado y ejecutado prácticamente en esta línea. ¿Todo bien? Por supuesto esto se puede extender si tienes más reclamos o más cosas que quieres agregar al usuario. Pero al final hablando, generalmente estás fuera de la caja, Candace, usas el código tal como es, ¿verdad? No. Entonces después de que intenta crear la cookie e intenta cumplir con todo el principio y firmar en los contextos HTTP, Va a regresar si fue exitoso o no. Entonces si fue exitoso, sí, iniciamos sesión en el registrador el cual estará configurando más adelante que este usuario haya sido conectado. Y luego redireccionamos. Si requiere autenticación de dos factores, hay una página que viene con identidad que nos permite facilitar, a FA si están bloqueados, ¿verdad? Entonces octo significa que en realidad podemos rastrear para ver que alguien tiene demasiados intentos de inicio de sesión o alguien ha violado alguna regla de negocio y no son capaces de acceder al sistema en este momento. Podemos poner esa bandera para que si están bloqueados, entonces los redirigimos a la playa que les ha visto saber que están encerrados, dijo. De lo contrario solo mostramos un error que puedes personalizar hasta cierto punto. No queremos dar demasiada información porque si la contraseña era incorrecta por el bien del argumento, no quieres darles algo lo suficientemente específico para conocer toda tu postura. Estaba mal, todo tu nombre de usuario estaba mal porque entonces estarías dando a un atacante al menos el 50 por ciento de la ecuación aquí, ellos sabrían exactamente lo que está mal. Entonces este es un mensaje muy genérico para ver un intento de inicio de sesión inválido. Una vez más sin embargo, se puede tratar ese balas dentro de buen gusto y seguridad. Y luego finalmente regresamos la página. Entonces si llegas tan lejos, eso significa que algo falló aquí arriba porque si fuera válido, se habría redirigido. Y nota baja en calorías directo porque no quieres redirigir nuestro redireccionamiento de riesgos a un sitio web externo. Por lo que fuimos redireccionamiento local a la URL de retorno. Ese es otro se siente seguro contra posibles ataques de redirección. Ahora podemos probar este viejo era lo que quería hacer es saltar hacia abajo a lo compartido e ir al inicio de sesión parcial. Y vamos a modificar la URL para el inicio de sesión para que tu URL no se parezca algo más al Registro 1. En cambio, voy a ver en un registro que va a ver un login. Y en lugar de registrarse una vez más, va a decir login. Muy bien, entonces ahora vamos a la cuenta login. Y de la misma manera para los logotipos, sólo podemos leerlos a la página del logo. Entonces tomemos este para dar una vuelta. Y cuando llego a la página de inicio de sesión e intento iniciar sesión con mis existentes son co-propiedad, estoy recibiendo un intentos de inicio de sesión no válidos. No, este no es un error muy obvio y necesitamos caminar, caminar por este. Permítanme explicar exactamente por qué está ocurriendo éste. Entonces la forma en que el inicio de sesión Manager, déjame saltar al inicio de sesión. El modo en que funciona el login Manager o este método es que toma un nombre de usuario y una contraseña. Entonces muchas de las veces cuando llegamos a este punto, podríamos confundirnos en maravilla, ¿por qué no funciona? Soy un outputting en lo correcto. Porque por defecto recuerda que la página de registro estaba tomando dirección de correo electrónico y la contraseña y la confirmación. Después usando ese valor de dirección de correo electrónico como tanto la dirección de correo electrónico como los valores de nombre de usuario. Por lo que ese es el resultado del comportamiento de caja. lo tanto, cuando se almacenó en la base de datos, no se ve en Correo electrónico y nombre de usuario siendo el mismo valor porque era la misma dirección de correo electrónico que se tomó y se utilizará para ambos. Desde que entramos sin embargo, ponemos en un campo de nombre de usuario. Por lo que estamos tomando nombre de usuario diferente al correo electrónico. Entonces eso significa cuando se está llamando al método de inicio de sesión con contraseña ac, como vemos aquí, está pasando en la dirección de correo electrónico que ponemos en lo que está comprobando eso contra el campo de nombre de usuario. Está bien, entonces por eso nos estamos poniendo los pies y eso no es completamente obvio. Entonces solo estoy señalando ese dedo porque me ha atrapado un par de veces. Entonces espero que esto ayude a alguien por ahí. Entonces lo que vamos a tener que hacer, una vez más, tenemos que conformarnos con cómo queremos que nuestros usuarios puedan iniciar sesión. Y aquí es donde la personalización de reglas de negocio determinará en qué extensiones probablemente pongas frente a cómo escribes tu lógica por completo. Entonces si quieres ese modelo de autenticación de correo electrónico, entonces bien podría dejar el correo electrónico como nombre de usuario y contraseña. De lo contrario, es posible que tenga que utilizar el correo electrónico para encontrar si hay un registro de usuario en. Si lo hay, entonces encuentras el nombre de usuario en ese registro. Ellos proporcionarían el correo electrónico, pero luego encuentras el nombre de usuario para luego hacer uso de este método. O en nuestro caso, todo lo que podemos hacer es simplemente cambiar el modelo de entrada de querer un correo electrónico a simplemente pedir el nombre de usuario para poder ver el nombre de usuario. Y no quiero que sea un campo de dirección de correo electrónico, ¿verdad? Entonces, um, esto refactorizar este campo de dirección de correo electrónico y la edición en cualquier otro lugar. Por lo que estamos pidiendo al usuario su nombre de usuario y su contraseña, su dirección de correo electrónico, y su contraseña. Entonces en la propia forma, por supuesto, después de actualizar las referencias. Está bien, ahí vamos. Entonces ahora que lo hemos hecho, podemos intentar de nuevo este inicio de sesión. Por lo que ahora estoy pidiendo nombre de usuario y contraseña. Y cuando hago clic en Entrar, vemos aquí que estamos registrados y obtenemos nuestra pantalla de bienvenida. Está bien, así que funciona de la misma manera que el gerente de inicio de sesión hace todo por nosotros. Pone los reclamos y todo. Entonces ven aquí, estamos viendo ese nombre de usuario. ¿ Todo bien? No, el botón del logotipo va a navegar a la página del logotipo, que luego nos pide que pinchemos aquí para iniciar sesión. Entonces solo voy a inspeccionar bien este elemento y arte, lo siento, en lugar de inspeccionar en el elemento como saltar a la página. Entonces en la página del logo, lo que va a tener es una granja. Eso básicamente dice gol aquí. Y hacer un post a esta zona con la URL de retorno de la página. Por supuesto que es una publicación y lo que dice pulsa aquí para iniciar sesión. Entonces, en otras palabras, estoy seguro que no querrías decir necesariamente a nuestro usuario, vaya a la página del logotipo, luego haga clic aquí para iniciar sesión. Si hacen clic en logo, ¿quieres bloquearlos? Entonces lo que podemos hacer es en lugar de tomar todo ese enfoque de navegar a la página del logo, puedo pedir prestado este formulario, volver a mi login parcial, y luego usar este formulario en lugar del elemento de navegación al logo página. Entonces este botón, ahora solo veremos logotipos. Por lo que cuando hagan clic en ese botón en realidad estarán enviando las solicitudes al logotipo. Por lo que sólo voy a quitar esa etiqueta de anclaje que tenía inicialmente. Y en términos generales, verá este tipo de configuración de formularios. Por lo que en la propia página del logo, tienes el En-Gedi que baja el tono. Claro, pero entonces esto es lo que sucede cuando hacemos clic en Cerrar sesión. Entonces el encargado de inicio de sesión, irónicamente asigna alt, ¿verdad? Por lo que el administrador de inicio de sesión es la biblioteca y cenotes asíncrono es el método que sabrá, vale, este es el usuario conectado mató la clave local, mata todo, y mata su sesión en el sitio web. Entonces es similar o básicamente hace lo que hicimos manualmente aquí. Está bien. Entonces eso es lo que la acción de Legos vienen empresas por nosotros. Voy a volver a nuestra solicitud. Y esta vez cuando haga clic en cerrar sesión, realidad solo hará logotipos y nos hará saber que hemos cerrado sesión con éxito. Entonces en realidad ni siquiera necesitamos ese logotipo pH, porque recuerden que estos archivos de identidad están realmente ahí, es solo que cuando queremos anularlos, podemos andamiarlos e interactuar con ellos como lo haríamos han hecho para el inicio de sesión y para el registro. Ahora después de quitar el archivo del logotipo, si volvemos a saltar a nuestro parcial de inicio de sesión, podemos reajustar esto para que se parezca un poco más a lo que podíamos esperar, cómo andamiamos todo el material de identidad de la creación del proyecto. Por lo que en términos generales, habrías visto la inyección del gerente de inicio de sesión relativo a la clase de usuario gobernante, ¿verdad? Y sí, acabas de inyectar así en los controladores o en la página que hemos visto totalmente hacer inyección de dependencia. Esto se inyecta únicamente en una vista. Y luego esta declaración if, en lugar de decir user.name identidad que se autentica y en Manager es el lijado de usuario. Y entonces sólo tomaría ese objeto reclamos enteros o objeto principal del usuario, ¿verdad? Ahí está la línea roja porque necesitamos hacer algunas importaciones de vista. Y esta vista importa archivo es una buena manera global de obtener declaraciones de uso en sus puntos de vista y parciales. Por lo que al poner el uso de Microsoft dot ASP NET Core dots identidad en el archivo de entradas de vista. cualquier lugar que necesites tener esa arena en Manager, User Manager inyecta. Se puede hacer sin madre, ¿verdad? Entonces si va a ir a iniciar sesión parcial, vemos, vale, ahora tenemos al usuario fuera. Por lo que podemos repetir ese proceso para usuario donde volvemos a View input y esta vez estamos agregando la sentencia using para el espacio de nombres donde se encuentra nuestro archivo de usuario, y eso es una entidades y está en el proyecto de datos clasifica. Entonces una vez que hagas eso, veremos que el usuario ya no está dando un error y puedo construir con éxito. Ahora eso es todo para espera, funciona la funcionalidad básica de inicio de sesión. Cuando regresemos, veremos seguridad adicional y cheques y equilibrios que podemos poner en nuestro propio todo este proceso. 17. Flujo de inicio de la manipula: Muy bien chicos, este es un video muy sencillo y se trata solo de manejar lo que sucede después del logo. Entonces vimos que talar India acabaría de hacer eso. Hacemos click Cerrar sesión va a ir realmente a nuestra página de logotipos. No necesariamente queremos simplemente sentarnos en la página. El usuario probablemente no tiene interés en ver una barba, ver nota me encanta. Probablemente querrías navegar por ellos de vuelta a la página principal. En ese punto, probablemente querrías seguir adelante y robaron la página del logotipo. Entonces déjame hacer eso rápidamente. Edades. Se raspa elemento, identidad, encuentra logotipos y elige o contextos, luego agregar saber cuándo ese excedente de pH pop, simplemente desplácese hacia abajo a lo que está sucediendo en el post. Entonces en las publicaciones, enviamos a todo el usuario y luego revisamos para dar vuelta a sus terrenos. Si hay uno, entonces redireccionamos a esa URL de retorno. De lo contrario, leemos a Erich a la página. Por lo que seguimos viendo la página en lugar de ir a algún otro cred de página. Entonces, obviamente, esto está regresando como no-no. Si salto para iniciar sesión parcial, realidad vemos en la forma que habíamos armado, recuerda que habíamos convertido ese logotipo comprado en una granja. Y sólo se está sometiendo a ese método onPause. Se envía sobre URL de devolución, que debe ser la página de inicio. Tan peculiarmente suficiente, eso no es volver, pero eso está bien. Lo que voy a hacer es simplemente trabajar nuestro. Entonces recuerda que estamos controlando el flujo de todos modos. Entonces no es comportarse Hall queremos lo que voy a hacer es simplemente cambiar todo en lo que sucede después de los logotipos. Entonces en lugar de confiar en una URL de retorno que sabemos se supone que es la página de inicio. De todos modos. Sólo voy a decir regresar redireccionamiento local y luego apuntó a lo que sé es mi URL de inicio, que a partir de este punto sería tilde y luego slash. Correcto. Ahora que lo he hecho, probémoslo y veamos qué pasa. Entonces estoy aquí y estoy conectado. Déjame ver qué pasa cuando hago clic en logotipos. Cuando yo logos, ves que estoy en la página de inicio y ya no se me permite el derecho. Entonces intentemos eso otra vez. Voy a entrar y luego fui a ir a la página de anuncios y luego voy a cerrar sesión. Entonces eso significa que después de un logo debe saber, ver qué hay en la página de inicio. Y ahí vamos. Entonces así es como controlas ese flujo de lava. 18. Implementación de la función de restación de contraseñas: Muy bien chicos, Así que estamos de vuelta y vamos a estar mirando la funcionalidad de contraseña olvidada en este punto. Entonces recuerda que cuando típicamente cuando alguien intenta iniciar sesión y tal vez después de que fallan un par de veces, se van a frustrar y luego van a querer hasta ahora fomentan o restablecen su contraseña, ¿no? Por supuesto, el verbiaje aquí, puedes cambiarlo. Puedes modificar la página de inicio de sesión como quieras. Pero si hago clic olvidó contraseña, observe que navegará a una página llamada Olvidé Contraseña. No nos hemos escabullido en una página así en absoluto. Pero recuerda que todas las páginas de identidad en realidad se quedan en el botón crecido si queremos modificar fin de semana, siempre lo rompían y los gastos generales como deseamos. Pero echemos un vistazo a lo que sucede fuera de la caja. Por lo que olvidó su contraseña. Por favor ingrese su correo electrónico. Simplemente voy a usar la misma dirección de correo electrónico admin en tes.com y luego restablecer contraseña. Y todo. El procedimiento típico para un restablecimiento de contraseña será que enviará un correo electrónico a la dirección de correo electrónico que has proporcionado. Entonces si traes tu papel capturado servidor SMTP, o al menos el cliente SMTP, entonces verás que hemos recibido ese email de restablecimiento de contraseña de nuestro sistema. Entonces si hacemos clic aquí, navegará a otra página que diga Reset Password con ese código Tolkien. Este código, se ve muy similar a cuando teníamos que confirmar los huesos de oráculo. Y entonces podríamos poner el correo electrónico, poner nuestra contraseña, y luego presionar reset. Y entonces dirá, está bien, se restableció. Por favor haga clic aquí para iniciar sesión. Qué punto debería poder iniciar sesión usando la misma contraseña que he estado usando o la misma postura que acabo de usar. Y perdóname, olvidé nuestro nombre de usuario usando y no e-mail. Entonces intentemos eso otra vez. Deberíamos estar bien para ir. Y ahí estamos. De acuerdo, entonces eso es básicamente con lo que salimos de la caja, olvidé su contraseña. No hay nada demasiado elegante, pero lo que vamos a hacer es seguir adelante y lo estropeamos para que al menos podamos ver lo que está sucediendo detrás de las bambalinas. Por lo que conocemos el procedimiento, nueva identidad de ítem rasgado. Y una vez terminada la construcción, seguimos adelante y seleccionamos lo que quieras. Por lo que quiero olvidada la confirmación de contraseña. También quiero Olvidé Contraseña y restablezca contraseña. Muy bien, Así que esas son las tres páginas que estuvieron involucradas en ese flujo de trabajo. Sólo sé. Entonces y yo hago todo eso. Ella era un contexto. Entonces puedo ver aparecer mis nuevas páginas. Entonces veamos primero lo que hace la contraseña olvidada. Por lo que sí toma en el remitente de correo electrónico por defecto. Entonces porque tenemos esa implementación, ni siquiera tuvimos que venir por aquí y hacer otra cosa. Simplemente sabe qué hacer con el sistema está configurado. Por lo que en cualquier lugar que necesites ese remitente de correo electrónico, solo necesitarías inyectar en consecuencia. Entonces qué hace en post, y este soy yo viendo que ESI quería restablecer mi contraseña y hacer clic en estos Reset, entonces verá, comprobar si este usuario existe en el sistema. Por lo que estamos encontrando por correo electrónico si el usuario es nulo o si el usuario aún no ha confirmado su correo electrónico, entonces vamos a leer las direcciones para olvidar la confirmación de contraseña. Está bien. Entonces esto básicamente es hacer eso porque no quiere darte una pista de que, ya sabes, sabemos que probablemente eres tendencia el sistema porque podría ser que erróneamente pones en su propio correo electrónico. Pero eso significa que no lo encontramos en el sistema o estás intentando olvidar tu contraseña, pero no has confirmado. Todavía te vamos a dar la impresión de que hay esperanza para ti. Entonces si el escenario es correcto, Realmente no hay esperanza, pero esta redirección sugiere esperanza. Por lo que en este punto se podría tomar una decisión. Probablemente podrías realmente darles retroalimentación háptica para ver si estás intentando olvidar tu contraseña y aún no estás confirmado. Por favor vaya y confirme el correo electrónico de DCG y confirme. Entonces estos el usuario sabe que Oh, lo siento, me perdí un paso y por eso no puedo meterme en el sistema. Entonces eso depende de ti. Pero ese es solo el comportamiento por defecto. Más adelante sin embargo, sigue adelante y genera el código. Entonces esto sucede cuando telefoneamos al usuario y al sistema. Estamos generando el código. Por lo que verás que se parece muy a lo que sucede en ese padrón. Bits de confirmación, ¿verdad? Por lo que sí generó el código en alterable. Mira aquí la diferencia clave. Ganó la URL para esto es Confirmar correo electrónico, mientras que la URL es para restablecer contraseña. Y otra cosa es que el Tolkien que genera es el restablecimiento de contraseña Tolkien. En tanto que en el registro se genera token de confirmación de correo electrónico. De verdad señalando que uno o dos porque yo ausentadamente en el pasado soy toda ignorancia dura. Copiado el código de uno y poniendo el otro y no pudo. Pasé una hora tratando de averiguar por qué este código token no lo haría. Permítanme proceder en el sistema. Eso se debe a que son dos mecanismos diferentes a través de diferentes mecanismos de hashing se utiliza. Entonces solo quería señalarlo con ese dedo por si, ya sabes, realmente no te habías dado cuenta de eso antes. Por lo que este es confirmación por correo electrónico y éste es restablecimiento de contraseña. Está bien. Seguro que hay otros. Si solo acudes al uso de administrar o controlar el espacio y probablemente estereotipando a Tolkien, entonces verás todas las diferentes opciones que podrían aparecer en la cadena de seguridad de contraseñas, GMail, cambiante, número, etcétera, etcétera, etcétera, etcétera, et cetera. Por lo que en base a la situación que puede necesitar para generar un código Tolkien para su confirmación, lo más que probable tendrá uno fuera de la caja para usted. ¿ Está bien? Entonces después de que genera ese restablecimiento de contraseña, Tolkien, luego va adelante y genera esa URL una vez más a la contraseña de restablecimiento. Y luego envía esa herramienta de correo electrónico, cualquiera que sea la dirección de correo electrónico que esté en el archivo de ese usuario, luego pasa a la pantalla de confirmación de contraseña. Entonces la confirmación de contraseña o la confirmación de contraseña olvidada más bien, todo lo que hace es que tú sabes, que revisen tu correo electrónico para que puedas modificar eso, que sea divertido, que sea un poco más fácil de usar. Eso depende de ti. Una vez más, no nos estamos centrando en la estética, solo nos estábamos centrando realmente en el piso de trabajo fuera de todos nuestros bits y piezas de autenticación. Después en el Reset Password, tenemos un formulario que pide tu dirección de correo electrónico, tu contraseña para confirmar tu contraseña, luego la contraseña de restablecimiento después de haber sido enviada se va a ver encontrar por correo electrónico. Si el usuario es nulo, lo que significa que no los encontramos. Los dirigimos a la pantalla de confirmación de restablecimiento de contraseña. Entonces, una vez más, les estamos dando esperanza para que siempre sepas cómo quieres manejar eso, ¿verdad? De lo contrario, queremos encontrar su registro en la base de datos y luego restablecer sus contraseñas. ¿ Es eso tan fácil de usar un gestor dot reset, jefe o el fregadero. Obtenemos al usuario, conocemos el código token basado en la URL, y luego damos la nueva contraseña. Y luego una vez que eso sea exitoso, te mostramos la página de confirmación. Página de confirmación, por supuesto, sólo tienes que navegar a nuestro sugiere que sigas adelante e ingresas. ¿ Todo bien? Una vez más, ni siquiera necesitas estropearlos a menos que pretendas modificar la forma en que se presentan. Y si quieres modificar el flujo de trabajo como lo discutimos para la contraseña olvidada. Entonces eso es realmente todo por implementar la funcionalidad de contraseña olvidada. Y para mí, el meollo del asunto es poner marcha ese servicio de correo electrónico que está ahí. Ni siquiera notarías que las cosas simplemente están trabajando más duro. Supongamos tienda. 19. Implementación de bloqueo de la cuenta: Muy bien chicos, Así que estamos continuando nuestro viaje por la biblioteca de identidades y todo lo que nos ofrece. Y en esta lección vamos a estar implementando esa función de bloqueo. Ahora esta es una buena manera de mejorar la seguridad bloqueando demasiadas veces a un usuario al que ingresa se animan credenciales. Y en realidad es una gran colina por ganancias ataques de fuerza bruta. Cuando tal vez un atacante tiene un nombre de usuario o contraseña e intenta en repetidas ocasiones entrar en el sistema con varias contraseñas potencialmente incorrectas. Entonces lo que vamos a hacer es modificar las opciones aquí para que sepamos que tenemos las opciones para habilitar la seguridad de contraseñas. Si miramos un poco más allá, podemos agregar opciones dot Lakota. Y luego podemos ver si está permitido para nuevos usuarios. Cuál es el período de tiempo predeterminado en lo que es el máximo intento de acceso fallido. Por lo que he dicho que sí, sí permite para nuevos usuarios. Tengo el lapso de tiempo predeterminado para timespan punto cinco minutos. Por supuesto, las reglas de negocio determinarán lo que haces y el número máximo de intentos fallidos es de tres. Por lo que después de tres intentos fallidos, los encerramos 45 minutos. Y no nos importa si eres un nuevo usuario no lo son. Entonces la opción está ahí. Pero cuando vaya al login, verás que el código, nuestro propio cabello no está cumpliendo las opciones. Entonces en la arena en Manager dot password inicio de sesión asincrónico método, ve aquí local en falla es por defecto, por el NO, esto es lo que se generó, estableció en falso. Por lo que necesitamos cambiar eso a verdadero para que sepa que queremos que actúes de manera estricta. No, podemos tipo de carne esta parte de a tal vez hacer un poco más. Muy bien, entonces, ¿qué queremos hacer cuando el usuario está bloqueado dicho? Entonces en este punto, si lo hacen tres veces, van a hacer, el resultado va a decir LaCo, esta persona, si están bloqueados totes va a redirigir a un pH local, que probablemente solo va a ver alto, tú están bloqueados. Espera unos momentos. Siempre podemos robarle que los pacientes vean qué es, qué exactamente se muestra en él. Pero sin andamiarla, lo que vamos a hacer es inyectar nuestros remitentes de correo electrónico. Entonces lo que pasa es que sí quieres que tu usuario sepa que han sido bloqueados. Por lo que sólo vamos a inyectar me correo electrónico remitente. Y la forma rápida de hacer esto es simplemente ponerlo en el constructor, luego usar Puntos de control, y luego dejar que cree un asignado los campos y luego seguir la convención de nomenclatura. Simplemente usaremos el guión bajo para el remitente del correo electrónico. Ahí vamos. Entonces de adentro apagado, el resultado está bloqueado, dijo que vamos a tener algún registro CSV que la cuenta ha sido bloqueada. Entonces voy a ir a buscar al usuario. Por lo que hasta ahora siempre hemos encontrado base de usuarios en la dirección de correo electrónico. Ahora puedo encontrar por nombre, que toma el nombre de usuario que se ingresó, ¿verdad? Entonces si pasas el mouse sobre fan por nombre, ves que quieren el nombre de usuario. Entonces cuando encontramos a ese usuario, no podemos obtener la dirección de correo electrónico. Por lo que ese paso es opcional si optó por rutinar ese correo electrónico como nombre de usuario y dirección de correo electrónico, si eligió una rutina que no tendrían que hacer este paso extra. Pero porque estamos iniciando sesión usando nombre de usuario, en este punto, necesito encontrar ¿qué es eso? Necesito encontrar los registros de usuario. Puedo obtener la dirección de correo electrónico para enviar la herramienta de correo electrónico. Entonces solo estoy recibiendo mi remitente de correo electrónico, enviando ese asunto de correo electrónico y luego mensaje HML para que el asunto esté bloqueado, una información de cono, lo que sea que quieras que está sujeto a B. Y luego mi correo dice que tienes ha sido bloqueado fuera de tu cuenta por un intento inválido de dos minutos. De no ser así, por favor restablece tu contraseña ya que esto podría haber sido una violación. Por supuesto, tu mensaje puede ser tan claro como necesitas que sea para el usuario sepa que esto es lo que le está pasando a sus conos. Y luego puedes saber redirigir a ese usuario a la contraseña olvidada o a los dólares a la página de inicio o a otra página solo para ver bloqueado, sea lo que sea, puedes determinar eso completo. Entonces este es mi flujo. Tan solo para darte una idea de las posibilidades en ese momento. Ahora lo que voy a hacer es probar esto. Entonces en la pantalla de inicio de sesión, solo voy a carnicar la contraseña que conozco. Y mientras hago eso, voy a saltar a la base de datos y voy a buscar la tabla de usuarios de maní. Y luego me voy a desplazar hacia la derecha donde verán habilitados los Lakota locales y acceder a conos de campo. Está bien, por lo que se supone que ese cono se incremente con cada intento fallido. Entonces este es el intento número uno. ¿ Todo bien? Y luego cuando refresque esta tabla y luego eche un vistazo, esos que verán aquí que la corriente de campo ha subido por uno. Entonces sólo me voy a sentir dos veces más deliberadamente. Y veamos qué pasa. Entonces este soy yo recibiendo redireccionado a la contraseña olvidada. Si vuelvo a la base de datos y miro, no, vas a ver que Maya Cone dice que he sido lactosa. Entonces Lakota habilitar esto, ¿verdad? Sí. Y me han bloqueado porque ningún fin de bloqueo tiene un valor. Entonces este valor es básicamente el tiempo de no, basado en el lapso de tiempo que dije, que era qué, cinco minutos. Y luego si revisamos nuestro servidor SMTP o cliente u otro, veremos que tenemos el correo electrónico diciendo que no ha habido una brecha. Por supuesto, para esto ahora podríamos en realidad simplemente hacer el todo Olvidado Contraseña, Generar el enlace y enviar ese enlace en la contraseña para que el atacante pueda ser redirigido aquí. Y aunque intentaran volver a poner la dirección de correo electrónico y enviarlos, momento en el que estamos pidiendo la dirección de correo electrónico, pero tienen que iniciar sesión con un nombre de usuario. Entonces sea lo que sea, sin embargo, la dinámica que atacante se detiene ahí mismo. No pueden proceder con nada. Pero entonces el usuario realmente obtendría los correos electrónicos para decir reset password o como dije, este original viendo seguir este enlace para restablecer tu contraseña. ¿ Cómo ponemos eso? Por lo que en este punto, siempre pueden hacer todo eso y ser capaces de manejar su propio destino. Entonces esas son pequeñas ideas. Una vez más, solo te estoy mostrando de qué es capaz el sistema. La implementación real es relativa a cuáles son las necesidades de su negocio. 20. Implementación de autenticación de dos factores: Muy bien, entonces en esta lección vamos a estar buscando habilitar la autenticación de dos factores. Por lo que la autenticación de dos factores en la mayoría de los sistemas, al menos que esta vez es realmente opcional. Algunos casos lo hacen obligatorio a este ritmo, o al menos fuera de la caja, podemos hacerlo opcional para el usuario. Y pueden entrar y cobrar su cuenta de usuario y habilitando o deshabilitando esa voluntad. Por lo que el primer paso en nuestra estaca en este movimiento o hacer este movimiento es configurar el enlace para ir a la página Gestionar para el usuario. Entonces el euro original que era sólo una URL viendo bienvenido. El nombre de usuario no tendrá reajustado a C es B área identidad ir a SBP, un índice de gestión co-propiedad, y el título es kilometraje. Eso está bien. Y entonces la textura significa lo mismo. Entonces veamos qué obtenemos cuando hacemos eso. Por lo que después de iniciar sesión, siempre podemos simplemente hacer clic en el admin, saber que es una URL y nos navegarían a la gerencia, digamos un panel de gestión para el usuario. Por supuesto, él puede andamiar los discursos y para saber qué rascarse, sólo hay que buscar en la URL para ver cuáles son los nombres de las páginas. Está bien, pero cuando, cuando los rasguñó, se pueden modificar para que puedan permitir que el usuario esté a cargo de su propio perfil. En este punto, pueden actualizar su correo electrónico, pueden cambiar su contraseña a voluntad y pueden habilitar la autenticación de dos factores. Y esta pestaña en realidad les permite eliminar las suyas propias son columnas. Está bien, por lo que puedes permitirles que puedan hacer todo eso o puedes restringirlos según necesites. Ahora volvamos a la página de autenticación de dos factores y haga clic en la aplicación de autenticación sentarse arriba. Y ahora se nos va a presentar la instrucción. Entonces esto es lo que el usuario está viendo fuera de la caja. La identidad con la que trabajaremos esa autenticación de dos factores que nos otorga Microsoft Authenticator o las autenticaciones de Google están disponibles tanto para dispositivos Android como iOS. Ahora ya tengo las apps en mi teléfono. Entonces si deseas aventurarte por este camino y mucho más allá de lo que sugiero, adelante y consigue cualquiera para tu teléfono. La siguiente instrucción diría escanear el código QR o introducir esta clave en tu desactivado de dos factores. Y luego navegarán para hacer alguna documentación sobre cómo conseguir que funcione el código QR. Entonces en realidad vamos a hacer eso juntos. Entonces la documentación para mí es bastante simple una tenemos que meter esta biblioteca en nuestro proyecto. Entonces si hago clic en ese enlace, veremos que lleguemos a descargar esa biblioteca. Así que adelante y descarga eso. Y luego en nuestro proyecto, podemos saltar hacia la raíz. Y en nuestra carpeta, solo voy a crear un nuevo directorio y llamarlo pasivo. Por supuesto que puede ser más específico. Y vamos a arrastrar los dos archivos JavaScript a la carpeta de la biblioteca. Por lo que necesitamos código QR dot js. Y si arrastras el otro es solo la versión completa de lo minificado, ¿no? Por lo que tenemos código QR dot js. Entonces vamos a tomar este archivo JavaScript o este código aquí o allá, y crear un nuevo archivo llamado QR ab.js en la carpeta raíz JS. Entonces solo estoy siguiendo las instrucciones como Microsoft me está diciendo, no estoy haciendo nada, todo el arte en el área aquí, pero estamos haciendo esto juntos. Por lo que nuevo elemento, quiero archivo JavaScript, que se encontrará en la web, un poco, o un archivo JavaScript. Y lo estoy nombrando como sugirieron, QR ab.js. Y luego pegamos eso en ese archivo. Ahora, después de que hayamos hecho todo eso, vamos a encontrar la página que está mostrando este toroide, que es el autenticador de habilitar, lo que claramente significa que tenemos que estropear esa página. Entonces no, me fui a saltar a nuestros conos, ir a agregar o ya sabes, la rutina ya va a la identidad. Y vamos a buscar la página, una barra de dos puntos, barra inclinada habilitar autenticador. Y como dije, muchas páginas con las que tal vez quieras interactuar, como 12, tal vez las cargue para desactivarlo. Si pueden habilitarlo, probablemente quieras permitirles desactivarlo. Y entonces probablemente querrías administrar nuestro cambio el índice con las propiedades de navegación, ya sabes, cosas como esa, lo que sea que quieras hacer. Entonces solo voy a seguir adelante e incluir esos tres. Puede que no interactúe con todos ellos, pero déjelos rozarse. Después obtendremos una nueva carpeta con todos los nuevos archivos. Entonces saltaré al expediente en cuestión. Y debajo de esta sección de guiones, vamos a añadir los nuevos caminos. Por lo que acabo de copiar esto de los bulks de Microsoft. Déjame sólo asegurarme de que mis caminos. Entonces eso es slash lib slash código QR y solo usaré min. Y entonces este es slash js slash QR. Por lo que siempre puedes usar Control Space para conseguir este adicional debajo de él. Entonces ahora que tenemos toda esa configuración, déjame intentar volver a cargar esa página. Y mirarías eso? Y todo lo que tenemos un código QR siendo visualizado. Entonces por supuesto que puede modificar la página y eliminar ese hit porque ya no necesitamos eso y quisiéramos decirle eso al usuario. Entonces en realidad sólo voy a escanear el código QR ahora mismo con mi teléfono. Ojalá pudiera mostrarte eso en ambos. Está ocurriendo. No. Y luego puedo poner en el código de verificación como está en mi teléfono y verificar. Y ahí voy. Por lo que ahora he habilitado la autenticación de dos factores para este usuario en particular. Nuestros conos conocen estas cotizaciones de recuperación que probablemente sugerirías al usuario o como ves el aviso, por favor manténgalos seguros porque si funciona lo contrario, necesitas meterte en el sistema, siempre puedes usar estos recuperar códigos para llegar a acceder. Ahora lo estoy, es todo eso. Si miro en la base de datos y miro el registro de ese usuario, veré que la bandera habilitada de dos factores no está establecida en true. Entonces eso significa que cuando volvamos al código para el proceso de inicio de sesión, hay algo que va a suceder cuando iniciemos sesión con éxito. Por lo que esto significa que hemos iniciado sesión con éxito. Y entonces esto va a ver si requiere autenticación de dos factores, luego redirigir. ¿Ves eso? Entonces no, el resultado no volverá. Yo lo logré, al menos no la primera vez que me estacionaría volverá ya que requiere autenticación de dos factores, que luego enviará esos a esta nueva página de inicio de sesión. Entra con dos FA, que no nos estropeamos. Podemos andamio, pero veamos qué sacamos primero de la caja. Por lo que fui a cargar, cargar e intentar volver a iniciar sesión con el mismo usuario. Haga clic en iniciar sesión, y luego vea que no es necesidad de navegar al nuevo inicio de sesión de página con dos FA pidiéndome mis citas Authenticator en este punto, yo o el usuario, como, como saben, el contexto determinará, haría ahora poner en lo que se me está mostrando en mi Authenticator up. Por lo que estoy poniendo mi código y hago clic en Entrar y ahí estoy conectado. Y así, tenemos habilitada la autenticación de dos factores. Ahora bien, este proceso es relativamente sencillo para alguien que es conocedor de la tecnología. Por lo que tal vez quieras pensar en la mejor manera de habilitar algo que está en tu organización. Pero todo el punto de la autenticación de dos factores es algo que sabes, y algo que tienes, ¿verdad? Entonces algo que sabes, sería un nombre de usuario y contraseña que es estándar, pero entonces alguien más podría saber lo que sabes. No obstante, la probabilidad de que alguien tenga lo que tienes se reduce aún más enormemente porque ahora este dispositivo está más en tu posición. Por supuesto, se necesitaría mucho más esfuerzo para que alguien pudiera acceder a Sarah Colin debido a la disparidad entre los dos puntos de contacto. No es infalible, pero es otro nivel de seguridad y complejidad al proceso de inicio de sesión que quizá quieras considerar o reconsiderar en función de tu audiencia. Recuerda siempre que más seguridad que va en significa menor usabilidad para algunas personas. Está bien, así que a veces hay que encontrar ese equilibrio entre usabilidad y seguridad. Con todo eso dicho, ¿cuáles son sus reglas de negocio? Asegúrese de que está tomando las mejores decisiones para usted y sus usuarios y para la longevidad y seguridad de su aplicación. Dicho esto, si el usuario vuelve a sus pujas de administrar y hace clic en la autenticación de dos factores, entonces tienen la opción de deshabilitar a FA. Y eso restablecería todo. Y habría vuelta a la necesidad de armar todo desde cero. Entonces, ya sabes, les das cierta cantidad de poder y ellos les permiten dinero también cierto romance. Una vez más, encontrar ese equilibrio entre usabilidad y seguridad. 21. Revisión de la sección: Muy bien chicos. Por lo que has alcanzado otro hito. Miramos bastantes cosas. Una bodega para conseguir el suyo propio ese error de andamios. Está bien. Espero que no quieras encontrarte, pero al menos lo hemos pasado para que sepas qué hacer. También miramos andamios más páginas y reemplazando nuestro propio código personalizado, especialmente el código de inicio de sesión que solo fue diseñado para esperar ver con el andamio o el Alt de la caja de código de calderas que esas cosas mucho más complejas, pero usando las bibliotecas de terceros que son muy poderosas. Entonces ves que la página de inicio de sesión está usando el gestor de inicio de sesión y tiene todas estas otras opciones y reforzamos algunas de ellas como con el tote de candado, volví atrás y agregué más CO2. Es una pausa puede golpear y replicar si quieres. Pero pongo el enlace a los restablecimientos de contraseña en una sola vez para que haya navegación, se les pedirá que restablezcan su contraseña a través de su correo electrónico. Todas estas cosas maravillosas. También miramos andamios más páginas, personalizándolas, mirando lo que está haciendo cada bit de código y una vez más, entendiendo cómo podemos modificarlas en base a nuestras necesidades reales. Entonces lo que voy a hacer es quitar nuestras páginas originales de auth. Ya no los necesitamos. Esas son cosas del pasado. Y ahora tenemos código más robusto y código mucho más seguro manejando nuestras operaciones. También miramos todo el fin de semana extender el ducto de funcionalidad identitaria. Entonces miramos las opciones incorporadas, sí, agregamos más para el mecanismo local, pero luego agregamos validación de contraseña personalizada y miramos el archivo. Podemos agregar más funcionalidad personalizada según sea necesario. Y básicamente lo que sea que se agregue como algo disfraz. Entonces si agregaste, tal vez déjame solo ver validador. Entonces si agregamos rol de validador, entonces él realmente te diría que necesitas. Y enrollé el validador C siempre te hará saber de qué interfaz necesita heredar la clase personalizada que vas a crear. Para que puedas apropiadamente en, lamentado, ¿verdad? Entonces en este caso ponemos en validador de contraseña, o lo llamo el servicio de datos válidos de contraseña. Y es solo heredar de i contraseña a través de los datos. Sí, si rollo validador, correcto, tienes yo, este validador yo, eso. Por lo que tienes bastantes opciones. Y en función de tu escenario, solo puedes usar esa interfaz, implementar el método y poner toda la lógica que necesitas para cumplir tus reglas de negocio. Entonces con todo eso dicho y hecho, lo que vamos a hacer ahora es revisar nuestro código. Como de costumbre, hacemos nuestro mensaje lo más claro posible y luego solo vamos a seguir adelante y comprometernos y sincronizar. Y me quedaré por ahí. Simplemente vamos a meternos en más carne y más conceptos están en todo el fin de semana seguro o aplicación. 22. Descripción general de la sección: Muy bien chicos, bienvenidos de nuevo. Estoy muy feliz de que estés aquí. Significa que estás comprometido a entender trabajo de autorización y autenticación de la OMS en las aplicaciones de dotnet Core. Ahora hasta este punto, ya hemos mirado alguna cantidad de autorización donde miramos la foto. En realidad puedes simplemente poner ese filtro HTTP justo encima de tu página o de tu acción, o de tu controlador, o incluso de tus componentes en función de qué sabor de la aplicación de dotnet Core es que estás usando. Y con sólo decir autorizar, estarás previendo a cualquier organismo que esté tratando de acceder al contenido en este punto final o en este lugar para que primero se autentica antes de que puedan proceder. Entonces si quisiéramos eso está en cada página. Ya sabemos que tenemos esa configuración que podemos poner en la startup. Se ve ligeramente diferente si estás usando una aplicación MVC. Pero más o menos es lo mismo donde simplemente forzamos ese autor como filtro en cada ubicación de nuestra aplicación. También miramos el hecho de que si hay localizaciones particulares que queremos dejar el abierto no requiriendo autenticación, y entonces sólo necesitamos compuertas con el permiso anónimo. Y estos probablemente serían menos que el número de ubicaciones que desea poseer. Entonces para mí, siempre es más fácil simplemente hacerlo globalmente y luego poner en las excepciones. Entonces ya hemos mirado esas cosas básicas, así que vamos a revisarlo en la siguiente lección. Pero para todo este apartado, vamos a ver todas las capacidades porque se tiene la autorización básica, que es lo que hemos mirado y revisaría. También tienes roles, tienes reclamos, tienes políticas. Vamos a ver todas esas cosas y cómo se pueden combinar para hacer una aplicación muy segura basada en las necesidades de su negocio. Así que quédese por ahí. Tenemos mucho que explorar en esta sección. 23. Implementación de la autorización básica: Muy bien, entonces estamos de vuelta y sólo queremos un resumen rápido de parte de autorización. Entonces en la revisión, solo sepan que miramos los diferentes sabores que podemos hacer en una aplicación Razor pages, qué extensión o aplicación puntonet Core donde uno, podemos establecerlo globalmente. Y si no queremos sentarnos eso globalmente, siempre podemos ir a la página específica o al código detrás de esas cuentas específicas. Por lo que esta es la página de índice de las categorías. Y puedo decir autor I. Así que en este caso no autoricé explícitamente. Ya está configurado globalmente puertos. Esta es una categoría, por lo que querrías autorizar esto porque probablemente quieras que esto se dedique a lo que los administradores del sistema pueden hacer en contraposición a los usuarios habituales. No obstante. Entonces correcto, no, sí altera como por el filtro global. Y si quería hacerlo explícitamente, sólo decimos autor, autores, eso está bien. Pero entonces si quiero autorizar globalmente y luego exime como hicimos para la página de índice de los anuncios. Eso se debe a que regularmente los usuarios deberían poder venir a mis sitios web clasificados y mirar la lista de anuncios sin necesidad de autenticarse. A lo mejor si quieren crear uno, entonces me gustaría que se autentiquen en ese punto, no permito el anonimato. Entonces tienes que autenticarte, firmar cono interior, entonces puedes crear para que yo sepa quién eres, ¿verdad? Entonces esos son los tipos de decisiones que hay que tomar. Pero entonces además de todo eso, porque un poco miramos todo esto en el nivel básico ya. Quiero mostrarte algunos ejemplos de apps MVC y blazer ups que he construido en el pasado. Por lo que mencioné que podría verse ligeramente diferente porque MVC, usan vistas, controladores y modelos. Por lo que las colocaciones de estas fichas de autorización estarían en el controlador. Y es un poco diferente a la página porque la página sí, tiene en Git y tiene en post y tienes lo que llamas a manejadores. Pero todos estos son relativos a la página. Entonces no es que pueda autorizar al En-Gedi. Trató de autor como en llega aquí. Y luego no autorizar a otro manejador. O está autorizando toda la página o no lo estoy. Entonces si trato de ofrecer como justo el manejador que ven aquí lo va a marcar y decir: Bueno, esto no se puede aplicar al manejador. Tiene que aplicarse globalmente. Entonces es o tienes acceso a la página y a los cientos en la página o a tus huesos. Entonces eso es todo MVC lo siento. Eso es todo las páginas de Razor con un mango, eso es todo escenario de autorizaciones. No obstante, aquí hay un ejemplo de una aplicación MVC que había hecho y en realidad hago esta en mi curso, completa ASP.Net Core y desarrollo en diferentes desarrollos de palabras, ¿verdad? Entonces en ese lo hacemos bien a través de la autorización simplemente no tan en profundidad como lo estamos haciendo en este curso. Pero verán aquí que se trata de un controlador y un controlador tiene diferentes acciones, ¿verdad? Por lo que cada oxígeno tendría una vista. Solo estoy pasando por esto en caso de que no estés muy familiarizado con MVC. Por lo que cada controlador tendría una acción y la acción tiene una vista correspondiente. Entonces si miras en la carpeta de vistas, siempre vas a encontrar, o siempre debes encontrar una carpeta con el mismo nombre que un controlador. Entonces este es el controlador de casa. Aquí hay una carpeta de inicio en la carpeta de vistas. Entonces la acción de índice, ahí está esa vista de índice que va con ese axón. Por lo que eso significa que un controlador tiene acceso a múltiples páginas a la vez. Puedo optar por autorizar todas las páginas que pudieran estar asociadas a este controlador. Lo que significa que solo por mí diciendo autor como tienes que iniciar sesión para acceder a la página del índice, a la página de privacidad, y probablemente incluso a la página de flecha, ¿verdad? Cualquier página que sea cualquier acción que esté aquí que tenga una página o una vista asociada a ella es automáticamente autorizada por mi haciendo esto. Ahora bien, si quisiera no autorizar todo el control sobre autorizar tal vez sólo una vista en particular, entonces puedo simplemente poner esa inundación directamente por encima de esa acción. Entonces eso significa que ningún índice requiere autenticación. Qué privacidad y error no. Así es básicamente como funciona en una aplicación MVC. Entonces aunque dijera permitir anónimos, todo este controlador, entonces este autor como con anular su bajo anónimo para esta acción en particular, ¿verdad? Entonces en cualquier momento que vayamos al índice, tienes que autenticarte. Pero debido al bajo anonimato uniformemente, había un autor global como filtro. Entonces. Esto permitiría que el controlador doméstico permitiera a los usuarios anónimos poder acceder a él. Entonces eso es básicamente lo que se ve en una aplicación MVC. No sé si, ya sabes cualquiera que prefieras, cualquiera sea el modelo que prefieras, dos son más o menos lo mismo. Simplemente hay que apreciar los matices para poder operar correctamente? No, el siguiente ejemplo. Viene en forma de mi blazer up. Entonces hago éste. Esta es una API de librería donde hago esta en mi velocidad en un curso core API y blazer. Entonces en ese curso sí pasamos por el desarrollo de API. Seguro. Y pero luego te das cuenta de que nuestro desarrollo de API es 12, igual que MVC donde tienes tus controladores y puedes marcar autorizado directamente por encima de esos endpoints API, derecho, o por encima de todo ese controlador, o por encima de eso comportamiento o acción, igual que representé en las aplicaciones MVC regulares para que pueda ejecutar un paralelo entre una API y una aplicación MVC en cuanto a cómo maneja la autorización. Pero entonces en cuanto al blazer, cuando estás en los componentes están en no, estoy en ese componente que carga a los autores. Dentro de este componente, puedo ponerte en un atributos en la parte superior del componente que dice autor. Y así esto, y eso es lo que estaba diciendo. Se ve básicamente igual en toda la aplicación dotnet Core. Entonces veamos algunos matices. Entonces aquí en realidad lo estaría viendo dentro del componente en sí. Y el componente es más o menos híbrido de sí, marcado HTML o RAS, Marco, hermano y C-sharp. Eso es más o menos lo que parece nuestro componente. Entonces en caso de que tú, no necesariamente estás familiarizado con él. Esto es lo que trae a la mesa. Entonces aquí mismo puedo ver que quiero autorizar estos componentes, es decir, si intentas navegar a él, tienes que iniciar sesión. Otra cosa genial, un blazer de barcos y algo como esto está disponible en las aplicaciones de puntonet Core a medida que subo en NBC. Es decir podemos ¿Quién es la vista autorizada? Entonces aquí solo estoy viendo vista autorizada y estoy especificando que si la persona es del rol administrador, entonces pueden ver esto. Eso es más o menos todo eso. Hace. Hacemos algo similar a eso en la página de inicio de sesión, no la página de inicio de sesión en el componente parcial de inicio de sesión. En nuestras páginas Razor hacia arriba, decimos solo mostrar ciertas cosas si la persona está logueada o si sabemos que podemos extender eso. Siempre podemos decir si la persona está en nuestro papel o algo así, podemos hacer esas cosas de lujo aquí. Entonces solo te estoy mostrando toda la autorización es una especie de, difiere a muy minuto se extiende entre las diferentes plantillas de aplicación dotnet. En última instancia, sin embargo, una vez que aprecias la idea de que una vez que pones autorizar o pones ese filtro global, entonces todo necesita ser autorizado. Entonces ya estás en tu trigo en la autorización de pie. Ahora lo que queremos hacer es darle un paso más allá. Entonces verían aquí que esto está especificando lo que llamaremos rollo, ¿verdad? Está diciendo roles igual de administrador. Puedo plantear mi gestión de licencias y puedo mostrarles a la en el, cuál es en la asignación de licencias. Se está autorizando automáticamente sólo reglas para administrador. Muy bien, así que hay momentos en los que realmente no se puede especificar que quiero autorizar sólo este rol para el control o estas acciones, o en nuestro caso, estas páginas. Por lo que en nuestro caso, queremos asegurarnos de que solo los administradores puedan crear categorías son categorías de interruptores. Pero entonces cualquiera un usuario regular debería poder interactuar con anuncios. Entonces esa es nuestra próxima misión. Entonces cuando volvamos, llegaremos a entender cómo eran las reglas el carbón. Agregamos roles a los usuarios y cómo usamos eso para hacer cumplir lo que pueden y no pueden hacer. 24. Agrega roles a los usuarios: Muy bien chicos, así que no a discutir roles sobre cómo podemos implementar filas en nuestra aplicación sobre profano sube, sí nos ayuda. Entonces nuestro papel es básicamente como un permiso. Al igual que ¿cuál es tu camino en tu empresa? Eres un jefe, Eres un trabajador, etcétera, en base a tu rol, puedes hacer ciertas cosas, haces cómo ciertos privilegios, etcétera. Entonces así como así en la vida real, queremos replicar ese tipo de rigor en nuestra aplicación. Cuando hablamos de subir reglas a los usuarios y asegurarnos de que no puedan hacer ciertas cosas. Por lo que la forma más fácil de entrar directamente al sistema realmente es sembrar. Es porque en términos generales, cuando comienzas a crear una aplicación en, tienes la previsión de saber que estas son las reglas que se podrían usar? Sí, Más adelante puede buscar en administrarlos a través de nuestra interfaz de usuario. Balas, ¿verdad? No hay fraude para enfriarse, sólo vamos a tratar de sembrarlos en la base de datos usando Entity Framework y cómo es esos sembrando o ED. Por lo que dentro de la configuración ya tenemos dos gases de configuración donde hicimos siembra. Entonces solo voy a replicar este tipo de constructo con las reglas son, y así solo voy a añadir una nueva clase. Voy a llamar a roles configuración semilla. Yo sólo voy a la configuración de semillas porque eso es todo lo que realmente voy a usarla para hacer. Y voy a dejar que herede de I entidad tipo configuración de rol de identidad. De acuerdo, por lo que es posible que necesite agregar algunas declaraciones de uso después de eso, pero entonces necesitamos implementar esa interfaz. Entonces note que estamos usando regla de identidad ya miraba la foto sobre identidad de usuario de entidad, Rhode, etcétera. Si optó por anular esto como en, está utilizando su propio tipo de tipo de rol al igual que en general el tipo de usuario, entonces siempre puede reemplazar el rollo de identidad cualquier tipo de rol que creó después del hecho. Tan nula dentro del constructor, voy a tener dos roles, cliente y administrador y todo. Estás mirando el código que está en mi pantalla y probablemente te preguntas qué tema. Eso está bien. Permítanme explicar todo el enrejado que sucede aquí. Por lo que ya tenemos la plantilla de cómo hacemos el CD o como decimos, un punto constructor tiene datos y nuevo objeto y luego rellenamos las piezas. Por lo que aquí hemos construido los datos de sus datos nueva regla de identidad. ¿ Todo bien? Y luego llenamos todos los campos son al menos los campos que consideramos absolutamente necesarios. Entonces tienes sistema concurrente tiene otro campo, pero realmente no necesito ese en esta situación. Entonces regla de identidad, ID es igual a, acabo de seguir telefoneado bueno porque usan void como clave primaria en las tablas de identidad, ¿verdad? Por lo que solo puedes ir a buscar un bien y usar eso. Y literalmente acabo de cambiar algunos personajes en ese mismo bien para que puedas replicarlo. Es así como puedes usar tu propio bien, eso está bien. Es una mesa en blanco, así que tienes el lujo de poner lo que quieres. Además, esta tabla no necesariamente cambia mucho, por lo que la probabilidad de estrellarse más adelante se reduce en gran medida. Entonces tengo eso. Y luego en nombre, típicamente me refiero al nombre es una cadena. Habrías tenido cuerda. A lo mejor dices cliente. Una vez que no quiero hacer sin embargo es escribir toda esta luz de cadena estática, esa es nuestra cadena mágica. Entonces para reducir eso, lo que hice fue crear otra carpeta llamada constantes. En eso constantes llenas de agregado un archivo llamado regla y luego rodar. Este tipo sólo tiene constantes, cuerdas. Entonces tantas reglas como quieras tener sólo nombres coincidentes y el valor real dicen de esa corriente mágica una vez. Está bien, entonces más tarde usted sólo por referencia, es así nombre es igual al cliente rho dot, que va a devolver el nombre normalizado del cliente de cadena estática. Básicamente es la versión capitalizada encendida, fuera del nombre que sea como vimos con el nombre de usuario y el nombre de usuario normalizado o e-mail y normalizar el correo electrónico en la tabla de usuarios de ASP NET. Por lo que nombre normalizado aquí, sólo vemos, Dame lo del cliente, pero ponlo en mayúsculas. Eso es mucho más limpio, creo, ¿verdad? Y después, hacemos lo mismo por los administradores. Tantas reglas como necesites, puedes replicar estos pasos. Ahora el siguiente paso es hacer RMI grisáceo encendido. Por lo que hay que recordar que necesitamos actualizar nuestros contextos DVI de aplicación para hacerle saber que debe saber cómo esta semilla mi configuración en null. Es posible que tengas múltiples configuraciones de semilla adelante porque es posible que quieras ver al usuario. Es posible que desee sembrar la fuente que este usuario está asociado a esta regla y puede terminar con muchos archivos de configuración. Entonces lo que voy a hacer es reducir las líneas individuales y sustituirlas por ésta. Modelbuilder dot aplica configuraciones desde el tipo de ensamblaje de aplicación, contextos DVI o lo que sea su contexto y objetivo de DB, no al ensamblado. Entonces esto es realmente español, cito unquote cuatro. Busque en el ensamblado actual en el que está el contexto DB y obtenga todos los archivos de configuración que están asociados. Eso es más o menos todo lo que está haciendo. Muy bien, así que automáticamente solo escanea y encuentra que todo aquí hay un archivo de configuración que está asociado a una entidad que conozco, etcétera, etcétera. Y con esa línea, simplemente aplicas automáticamente todos esos archivos de configuración. Entonces háganoslo saber, ejecute nuestras Migraciones. Voy a agregar migración de semillas rurales, que entonces como se esperaba, nos da este archivo de migración afirmando que wearable para insertar valores en nuestra tabla de roles netos SBI. Muy bien, así que esta es nuestra identificación que va a poner y luego automáticamente hizo el sistema concurrente y el nombre Ministerio Peter y cliente. Está bien. Entonces con eso hecho, podemos hacer una actualización. Y no, hemos actualizado con éxito el sistema. Ahora en este punto, usted quiere probablemente tener un administrador en el sistema separado de los usuarios o cualquiera que se registre normalmente debería ser un usuario de rúcula, nuestro cliente otro, y luego controlamos a los administradores. Por lo que en base a sus reglas de negocio y su estrategia, puede que tenga que emplear diferentes formas de hacerlo. Por lo que en términos generales, querrías tener un administrador del sistema. Por lo que ya tenemos algunos usuarios que ya nombramos admin. Y les voy a mostrar exactamente cómo pueden asociarlos con nuestro papel en la base de datos directamente. Entonces esto es una especie de Manuel y luego veremos cómo cliente semilla de fin de semana. Y luego más allá por extensión, miramos cómo podemos establecer la regla una vez que la persona se haya registrado. Entonces, empecemos con la tabla ISBN que usuarios. Y vamos a estar mirando la identificación de las filas. Por lo que ASP NET reglas y usuarios netos SBI. Por lo que veremos los datos de ambas tablas. Ya veremos lo que esperamos, ¿verdad? Administrador versus los usuarios. Entonces hay otra tabla aquí y todo lo que es una tabla de relaciones de muchos o un enlazador hasta entre los usuarios y roles llamados roles de usuario ASP NET. Entonces este en realidad toma el ID de usuario y la idea de rol y dice que estas dos cosas que asocié es que un usuario puede tener múltiples roles. Entonces no es que un usuario tenga que ser solo uno u otro. Puede soportar múltiples. Pero eso es una vez más, está a la discreción de sus necesidades de negocio. Por lo que quería tomar admin test este usuario. No quiero entrar en roles de usuario y voy a decir que este ID de usuario, entonces voy a pasar a roles y voy a tomar ese ID de administrador y voy a decir este ID de regla. Yo, una vez que hago eso, fuera del culo nulo. El usuario administrador es visto como un administrador a nuestra escena para tener este rol en nuestro sistema. Bueno, nos toca decir lo que este papel puede y no puede hacer. Pero en lo que respecta al sistema, ese usuario tiene ese papel. Es así de sencillo. Pero símbolo no siempre significa práctico porque no hay ningún usuario que vaya a venir por aquí y hacer esto. Por lo que vamos a saltar para ver realmente se espera que suceda en el sistema. Entonces cuando alguien registre eso, simplemente cerraré todas las pestañas. Cuando alguien se registra es cuando necesitamos asociarlos con la parte de rollo. Por lo que volver a la página de registro. Lo que vamos a hacer en post es si la creación del usuario fue exitosa, entonces vamos a tener que agregarlos a la regla. Por lo que podemos decir información de inicio de sesión creada nuevo usuario, una llamada con basilar, eso está bien. Debajo de ese registro, vamos a ver a un gestor de usuarios de peso. Por lo que estamos para tener el usuario manager, Conocemos el, la existencia de tu polaridad. Y luego vamos a ver un punto. Y si solo escribo en regla, vas a ver todas las cosas potenciales que puedes hacer con el monitor de usuario en relación con la regla. Por lo que puedes agregar a rodar. Se puede, perdón por eso. Se puede conseguir roll, conseguir a los usuarios en una regla particular. Podrás comprobar si nuestros usuarios en un rodeo, tantas cosas. Muy bien, entonces en este caso queremos sumar a rodar, así sucesivamente a alterar un fregadero. Y entonces esto toma dos parámetros, el usuario que acabamos de crear y el rol. Y yo sí, lo que siempre puedo escribir administrador, si escribo eso incorrectamente. En ese punto, estaría depurando por un tiempo preguntándome por qué esta cosa no funcionará porque probablemente me eché de menos viejo y yo, y me olvido de ello. A lo mejor venga alguien más y vea que lo escribiste mal. Entonces fui a decir roll, que es nuestra cruz constante y no la estoy viendo. Entonces déjame saltar de nuevo por aquí. Muy bien, así que menos y defectos y yo solo lo voy a tallar yo mismo. Si antes viste al IRS, entonces está bien. Uno, necesito hacer esto público. Yo no lo hice público. Y dos, que el nombre del archivo es reglas. Los nombres de clase también deben ser filas. Muy bien, así que intentemos esto otra vez. Entonces roles, y si Control puntos nulos, podemos conseguir su derecho. Entonces roles, administrador de puntos o cliente. Entonces puedo decir agregar dos filas y las filas, cliente y creo que eso es más legible, Eso es compilar seguro. Por supuesto. Por lo que no hay error con respecto a la ortografía o cualquier ambigüedad respecto a qué regla se está utilizando aquí. De acuerdo, así que hagamos una prueba rápida y registremos un nuevo cliente. Y tengo algunos errores. Necesito empezar justo con la ortografía aquí. Por lo que estoy registrando a este nuevo cliente. Y una vez que golpeamos este discurso y sepamos que está funcionando. Entonces si vuelvo a saltar a las bases de datos C1, tenemos a nuestro nuevo cliente aquí, cliente. Y ves que la identificación empieza con 22 un algo-algo. eso es bueno, si miramos en la tabla de roles de usuario, elimino la anterior que hicimos. No, verás que tenemos ese cliente, por lo que tenemos ese ID de cliente, así como el ID de rol que corresponde con el rol del cliente. Y eso es más o menos. Entonces no, todos los que pasen por esta autenticación en particular, lo siento, este proceso de registro en particular siempre se agregarán al cliente. Ahora en este punto, quizá quieras considerar, ya sabes, si quieres diferente o quieres permitir que las personas se registren como diferentes roles. Porque sí tienes eso a veces en sistemas que podrían servir en el embarque. A lo mejor tu papel podría representar a ese departamento, verdad. O algo así. Por lo que quieres usarla para identificar qué departamento son, qué papel desean tener en el sistema para que cuando solo haya el uso ese papel en particular. En ese punto, comienzas a querer mirar el papel de manager, lo que te permite interactuar un poco más con la regla es estable. Por lo que siempre puedes igual, bueno, tienes el usuario y los gerentes descendentes, tienes rural y gestionar o relativo al rol de identidad o lo que sea tu clase personalizada. Y entonces sólo puede seguir adelante e inyectar eso en tu página de registro. Y solo estoy asumiendo en este punto que ya sabes configurarte como una lista desplegable y todas esas cosas. Entonces no me estoy centrando en la UI aparte. Entonces lo que estoy tratando de 0 es que realmente puedes configurar tu lista de roles aquí como una nueva lista de selecciones. Ese papel de TX de puntos de gerente. Y entonces sólo puede conseguir los roles como una lista de reglas ahí mismo. Y puedes ponerlo a lista si quieres, puedes filtrar por. Es por lo menos oferta venía de la base de datos. Entonces si estás dentro, si estás en sintonía con cómo manipular listas usando enlazadas y se extiende sobre métodos, entonces será el mismo principio aquí. Para que pudieras hacer eso. Y luego tienes el nombre como el campo que se va a seleccionar y el nombre como lo que se está mostrando. Y ahí mismo, podrías enumerar todas las reglas a tu página para que tus usuarios puedan seleccionar cuál quieren. Entonces para poner más practicidad a esa sugerencia, lo que he hecho es modificar el modelo de entrada. Y he agregado una propiedad seleccionada, cuatro rollos y uno para el rol requerido. Por lo que tienen que identificar qué fila quieren con el fin de presentar con éxito. Sabemos de eso ya está bien. Entonces en los fgets, voy a decir input, que es el objeto de modelo de entrada que utilizará el pH. Lo estoy inicializando a una nueva instancia donde las reglas serán iguales a una nueva instancia del rol, administrar roles adultos. El punto que obtiene el nombre como selector, el valor del selector, y la visualización. En C-Sharp en las últimas versiones de CSRP en realidad puede simplemente decir nuevo, solo decir lo que hice aquí. En lugar de decir nuevo modelo de entrada, de nuevo, el pecado te, pero a veces por legibilidad todavía lo guardo. Y aunque los tiempos adultos necesariamente usan es porque el constructor podría estar implícito. Eso es además del punto aunque. Entonces queremos asegurarnos de que tenemos eso ahí y luego no donde los sumamos al rol en lugar de codificar duro la regla, vamos a tomar el papel que venía de la entrada. ¿ Todo bien? Por supuesto que tenemos que repetir esa asignación de la lista de reglas si algo se siente para que el pH pueda recargar la lista con éxito. Entonces vamos a ver cómo se ve eso. Por lo que en la propia página Registrar, todo lo que hice fue agregar select tag. Está bien. control de forma dio los ítems que vienen de la lista de roles de punto de entrada y es para el rol. Y luego tiene un deseo de que por defecto seleccione rollo deseado y no está listando las reglas que provienen del sistema. Está bien, eso es simple. Entonces si me estoy registrando como cliente y como cliente uno o déjame registrarme como administrador. Y voy a ver a Admin uno y llenar esto. Y luego golpeo registro. Muy bien, Así que tocamos la página de confirmación y si salto de nuevo al proyecto y miro en la tabla de usuarios, vemos que tenemos admin 1 e id 0, 0, 1, b Digamos que si voy a la tabla de roles, ahora voy a ver que tengo 000 001 BE. Y este es el ID de administrador puede cruzarlo si lo deseas. Pero mi punto es que, así es como conseguirías que el usuario seleccionara su propia regla y se incorporara con una regla en particular. Por supuesto, una vez más, siempre se puede manipular esas listas. Entonces si lo es, tengo el rol de administrador y otras reglas basadas en el usuario, pero no quieres que la gente seleccione administrador entonces acabas de excluir de esa lista cuando se está cargando. Entonces con todo eso dicho y hecho, es como consigues agregar reglas a los usuarios. Sepan, cuando regresemos veremos cómo podemos restringir lo que ciertas reglas pueden y no pueden hacer. 25. Imposición de la autorización basada en el rol: Muy bien chicos, entonces en esta lección queremos ver cómo podemos saber empezar a implementar las reglas y restricciones con base en las reglas en nuestra aplicación. Entonces ahora mismo tengo un sitios de poros y se puede ver que hice su pequeño lifting facial a la portada. Sólo un poco de cosas informativas. Pero si miramos los anuncios y nuestras categorías, vemos que las categorías están requiriendo autorización o autenticación más bien, mientras que los anuncios no lo son. No obstante, en los anuncios, puedo fácilmente hacer ediciones comunes, mirar los detalles o eliminar un anuncio, ¿verdad? Entonces esas son pequeñas cosas que por supuesto, serían banderas rojas en cualquier sistema. Y quieres poder restringir lo que ciertas personas pueden hacer. Y estamos seguros de que la gente puede ir porque en este punto, puedo entrar aquí como cliente y aún así poder manipular todas las categorías. Por lo que queríamos asegurarnos de que el acceso a las categorías esté restringido únicamente a usuarios administradores. Y probablemente quisiéramos ocultar la capacidad de manipular el anuncio o al menos editar o eliminar un anuncio o solo usuarios administradores. Por lo que una modificación nos ayudará a modificar el código detrás del archivo porque hay una página es página, que una vez más podría ser fácilmente la acción o incluso el componente de la maquinilla de afeitar. Y el otro nos tendría modificando los rayos reales de página, que sería como para como con la aplicación MVC en una página de currículum. Y más o menos lo mismo para un componente blazer. Por lo que quería empezar con lo que creo que son las frutas colgantes inferiores, que está modificando el código detrás. Entonces todo lo que quiero hacer es asegurarme de que cuando la persona que intenta iniciar sesión, cuando venga y trate de iniciar sesión, tenga que ser administrador. Está bien, así que déjame logotipos y voy a saltar de nuevo a nuestro código de aplicación. Y todo lo que tengo que hacer realmente por las categorías es especificar autor como así todavía tenemos que volver a nuestro autor como filtro. Pero entonces voy a hacerle saber que el rol, así que verás aquí que puedes especificar el autor tiene atributos con esquema de autenticación Wanda. Por lo que puedes restringirlo si es cookie o si no es cookie, permitir o no permitir, etcétera. Puedo especificar una política. Estaremos viendo políticas más adelante. Y también puedo especificar los roles. Entonces nota sus papeles, ¿verdad? Por lo que en realidad puedo ver que más de un rol puede acceder a un área en particular. Entonces cuando digo reglas aquí y digo iguales, en realidad le daría una cuerda. Ahora esta cadena sería como si tomara una lista separada por comas, dice aquí nos pone. Se trata de una lista delimitada por comas de reglas a las que se les permite acceder al recurso. Entonces si quería administrador coma, cliente, coma, crecer una regla de coma a tantas reglas como quiera dar autorización a un recurso en particular, sólo puedo comas, separarlas por todo el discurso. El peligro de las cuerdas mágicas y escribirlas así. El, de la matzah esas más veces en realidad sólo lo verás escrito. Ahora en esta situación, quiero que solo el administrador pueda acceder a las categorías. Entonces sé que es sólo una. Ahora solo puedo decir reglas, que es mi clase estática. Y luego decir administrador. Y entonces porque como muchos otros roles son Xudong, sólo tenemos que concatenar las cuerdas a medida que vamos y las juntamos. Métodos más avanzados incluirían la creación de un filtro de autorización personalizado, que podremos ver más adelante. Pero ahora mismo solo lo estoy manteniendo simple y mostrándote cómo autorizarías para una regla en particular En conjunto de tu solicitud. Entonces en este momento si navegamos a la página de categorías e intentamos autenticarnos como cliente, entonces vamos a conseguir esta página de acceso denegado. Ahora esta página que no creamos, es una vez más una de esas páginas que podemos andamiar y modificar si lo deseamos, pero está ahí en la identidad slash conos slash acceso denegado directorio. Muy bien, Así que si bien nos autenticamos como el usuario o como el cliente en esta situación, no podemos proceder a este recurso en particular. No obstante, podemos ir a otro lugar como persona autenticada simplemente no a la página de categorías. Por lo que tantas páginas o acciones o controladores que querrías mucho no lo hacen. Se puede agregar que autorice con la especificación de reglas ahí. Y no cuando trato de hacer lo mismo con admin one, que es un usuario que acabamos de agregar a través del registro. Que deje que los usuarios tengan su propia regla. Ya podemos acceder a categorías. De acuerdo, así es como funciona eso. Ahora, saltemos a los anuncios. Entonces sí, quisiéramos que los anuncios estuvieran abiertos al público. No obstante, solo quiero que los clientes puedan crear nuevos, y solo quiero que los administradores puedan editar o eliminar. Por lo que la gente regular puede venir a ver la lista de anuncios. Pueden hacer click en los detalles. Claro, pero sólo menos son un usuario autenticado le permitiría crear el suyo propio. Ni siquiera quiero que un administrador sea capaz de crear el suyo propio. Quiero que los clientes puedan crear sus propios anuncios, y solo quiero que los administradores puedan editar y eliminar. Entonces en la página de índice de los anuncios, todo lo que vamos a hacer es modificar esta sección que muestra que crean nuevos botones. Por lo que sólo voy a decir a la señal si el usuario punto. Entonces recuerda que un usuario representa a nuestro principal de usuario para el usuario conectado, ¿verdad? Entonces solo voy a decir si el usuario está en rollo, ahí vamos. Y luego aquí una vez más, simplemente tecleamos el nombre del rol que no necesariamente queremos hacer. Preferiríamos usar nuestras constantes. Entonces roles, necesitaría incluir ese espacio de nombres en el puerto de vista. Entonces solo voy a decir que el espacio de nombres no sino hueso a las importaciones de vista y luego agregar la declaración de uso para ello. Entonces, en cualquier momento que quieras usar nuestra clase o en cualquier otro lugar dentro de las vistas, solo lo dejas caer en vista importaciones o siempre puedes dejarla caer en esa página en particular. Entonces roles, puntos. Y quiero comprobar si se trata de un cliente. Entonces muestra eso, Crear Nuevo, y sólo arreglaré el formato aquí. Está bien, así que quiero mostrar esto sólo si los usuarios en el papel de cliente. De igual manera, para editar e incluso eliminar, y se puede modificar esto. Es decir, podría escribir dos declaraciones. No quiero escribir dos declaraciones. Yo sólo voy a mover los detalles a la parte superior, y luego sólo voy a tener una declaración if, si el usuario se está inscribiendo, y luego estamos comprobando si están en el papel de administrador, entonces podemos mostrar estos dos enlaces a ellos. Está bien, así que eso es todo. Para que puedas empezar a modificar lo que ven ciertos usuarios frente a lo que ven otros usuarios. Digamos que todo el mundo está autenticado, algunos son nudos. En este caso, la persona está mirando este anuncio no se compran. Déjame empezar eso desde no. ¿ Verdad? Pero si estás autenticado y en un papel particular, entonces ves algo del administrador infrarrojo tuyo ver que lo que ves esto, ¿de acuerdo? Y si no eres ninguno, entonces no verás nada de eso. Entonces echemos un vistazo a lo que obtenemos después de estos meses. Está bien, así que estoy navegando a la velocidad del anuncio como nuestra persona regular. No estoy autenticado de ninguna manera, forma, ni forma. Estoy viendo la lista de nosotros y siempre puedo navegar a sus detalles y eso está bien. Ese es el resultado esperado ¿verdad? Ahora si registro nuestro login lo siento, como cliente o navegé su mientras estoy ingresando como cliente, entonces veré que puedo seguir adelante y poner mi propio anuncio si quiero. Pero todavía sólo estoy restringido a ver los detalles de otros anuncios que otros usuarios podrían haber creado. Ahora si entro como administrador, ahora tendré el poder de manipular esos anuncios. Por lo que siempre puedo mirar los detalles, sí, pero también pueden editarlos y eliminarlos. Pero no puedo crear uno como administrador porque esa es la regla del sistema, no los roles de un cliente. Por lo que una vez más, estoy creando mis propias reglas de negocio para estos escenarios, pero solo te estoy dando sus ideas en cuanto a cómo puedes implementar los protocolos requeridos o de seguridad que repasaremos en el sistema en tu organización. Es así como se hace en el nivel más básico. 27. Acceso a Reclamaciones en aplicación: Muy bien, entonces hablemos sobre la configuración de la autorización basada en reclamos. Entonces recuerda que acabamos de pasar por lo que son los reclamos. Las reclamaciones son bits de información sobre el usuario que actualmente está registrado sido. Entonces entre más reclamos que tengamos a nuestro alcance, más decisiones que podamos tomar para saber si debemos permitir nuestras restricciones al usuario desde un recurso o puntos finales en particular. Entonces lo que voy a hacer es trabajar con la página de creación para el anuncio. Veamos que ningún usuario que sea menor de 18 años puede crear un anuncio. ¿ Está bien? Por lo que no deberías poder crear un anuncio a menos que tengas como mínimo 18 años. Ahora ya sabemos cómo los restringimos usando la bandera autorizada arriba. Y vamos a ver las políticas es, pero quiero mostrarles diferentes formas en las que realmente pueden interactuar con los limpios. Porque sí vimos que se puede acceder a los limpios en lugar de necesitar golpear la base de datos. Entonces, ¿y si necesitabas acceder al reclamo? Toma una decisión basada en ese reclamo, si en este caso es el, ya sabes, mostrarles acceso denegado. Por ejemplo, REO alguna otra regla de negocio que necesitas implementar lo que solo queremos saber cuál es el valor del reclamo. Entonces digamos que quería la edad mínima del usuario actual. Puedo empezar diciendo que var es la edad mínima es igual al usuario, que representa el objeto de usuario que reclama objeto principal en los contextos HTTP. Por lo que el usuario dot encontrar primero. Antes incluso te muestro la multa primero si dices usuario.email en realidad ver reclamos que vienen enfrente. Ves múltiples identidades que puedes determinar está en rollo. Se pueden ver reclamos, etcétera, etcétera, etcétera, etcétera, ¿no? Todos esos están disponibles para ti. Entonces si haces reclamos, reclamos son realmente solo una colección de los reclamos. Por lo que en realidad podrías usar esto para decir, primero nuestros valores predeterminados son solo consultarlo, interrogar la lista de la misma manera que habrías interrogado algo en la base de datos. Podría decir Klimt para como nuestra expresión lambda predeterminada q punto. Y entonces podría encontrar que eso es lo que quiero, correcto, es equivalente a, así que el tipo aquí es una cadena. Y entonces por eso tenemos nuestros reclamos de usuario clase constante. Por lo que no tengo que escribir sobre esas cadenas estáticas todo el tiempo. Por lo que dirá usuario afirma que su edad mínima. Y luego después de que lo consiga, esto no sería un reclamo. Entonces por supuesto, consiguiendo el reclamo, no sé si realmente existiría. Yo sólo voy a hacer puntos de interrogación. Entonces esa es mi nula coalescing donde diría, Si no existe, simplemente devuelve nulo, de lo contrario, intenta obtener el valor si existe. De acuerdo, así que esa es una forma de encontrar la edad mínima. Por lo que ven aquí podemos interrogar la lista de reclamos igual que haríamos cualquier otra lista en C agudo. Ahora una alternativa a esto habría sido la primera con la que empecé, que sería el hallazgo primero. Por lo que user.name encuentra primero. Y luego dentro de eso, realidad podríamos simplemente poner en la cuerda representa ese reclamo. Entonces encontrar primero toma el tipo como parámetro y simplemente devuelve nulo si no mucho su teléfono. Y entonces el tipo de retorno de curso sigue limpio. Entonces eso significa que aún tendría que tratar de obtener ese valor. Por supuesto que ese valor va a ser string, así que todavía no tenemos eso como booleano. Entonces eso es otra cosa que tendrías que considerar. Y aunque la cosa también es que este método de hallazgo primero también podría tomar una expresión lambda similar a lo que hicimos con la fina primero. Entonces solo te estoy mostrando todas tus opciones es bueno conocer tus opciones, pero claro que al mismo tiempo es bueno instalarte en un estándar para que cuando todo el mundo tenga que trabajar juntos, todos estén en el mismo un cuarto, ¿verdad? Por lo que estas son diferentes formas que puedes usar para acceder a reclamo particular y luego el valor que ellos gritan tiene. Y entonces por supuesto, basado en el tipo de datos que esperas o que necesites procesar, entonces tienes que hacer tu conversión. Entonces lo que voy a hacer es tener esta afirmación if que diga si la edad mínima es equivalente a null, lo que significa que el tipo limpio probablemente no existe para este usuario. O si después de analizar, obtenemos el valor de false, entonces queremos redirigir a la slash de identidad nuestro acceso de slash de colon denegado. Por lo que el acceso denegado es un pH que está disponible para nosotros a través de la suite identitaria de páginas. Por supuesto, si añades otra pieza a la que querías que fueran, solo podrías leerlas ahí en ese punto. Entonces eso es todo lo que estamos haciendo. Entonces hagamos una prueba con nuestro cliente que sabemos que está el día 18. Por lo que después de iniciar sesión con cliente menor de 18 años y luego tendencia a crear nuevo, vemos que no estamos redirigidos al acceso denegado. ¿ No puedes acceder a eso ya que eres menor de 18 años? No. Estoy probando esto de nuevo en modo de depuración o el mismo usuario, acabo de golpear puntos de ruptura se ponen un punto de ruptura más bien en nuestras declaraciones if para que pudiéramos parar. Y puedo mostrarles lo que realmente está pasando detrás de las escenas. Por lo que tenemos nuestro principio de reclamos de usuario. Si extendemos esto, vemos que tenemos todos los reclamos. Si miramos en los reclamos, entonces vemos que tenemos los estándares que conocemos, y luego los personalizados. Por lo que la edad mínima es falsa como se esperaba. Y así cuando llegamos a este punto, dice falso, así que ni siquiera tenemos que revisar para que sea. Entonces esa comprobación de conocimiento era realmente yo ser excesivamente cauteloso. Pero en esta etapa, dado que estamos controlando lo que entran los reclamos, Eso es lo que hicimos en la última lección. En ningún momento debo usar un login sin el reclamo particular, ¿verdad? Entonces, a menos que algo cambiara todo el sistema. Y por eso tenemos regresión de luz en las pruebas y pruebas unitarias para asegurarnos de que estas cosas no sucedan, ¿verdad? Entonces si es el borde mínimo, en realidad puedo hacer con todo eso. Pero después de analizar esa cadena, comprobamos si es equivalente a false y es así entonces por eso vamos al redireccionamiento Return. Para que puedas seguir adelante y probar a ese usuario de pátina cuya fecha de nacimiento los pondría más allá de los 18 años de edad. Y luego vuelve a intentar este escenario y ver qué pasa. Entonces ese es el paso número 1 de cómo podemos usar reclamos durante el tiempo de ejecución del sistema. Cuando volvamos veremos veremos cómo podemos implementar las políticas. Entonces, bueno, claro que sería un poco difícil estar poniendo este tipo de lógica aquí, allá y en todas partes. No necesariamente querrías hacer eso. Por lo que vamos a empezar a mirar políticas que podemos usar nano para hacer cumplir que los reclamos particulares deben estar presentes y probablemente puedan incluso extenderlo a C, deben tener ciertos valores antes de que estos usuarios puedan ser admitidos en ciertos lugares. 28. Imposición de la autorización basada en la política: Muy bien chicos, Así que la lección que estamos aquí, estamos discutiendo por qué no es práctico tener este tipo de lógica por todo el lugar en cualquier momento que queramos hacer cumplir ciertas restricciones basadas en reclamos. Entonces en esta lección vamos a ver este constructo llamado política. Por lo que ese viaje comienza en el archivo CSS de startup dot donde tenemos que agregar autorización a nuestro servicio, su Batman. Por lo que sólo estoy haciendo eso justo después de la identidad add default y leer antes de que las arterias de páginas autoricen filtro. Entonces solo digo que me autorizaría y luego las opciones que me estoy alimentando serían sumar política. Y ya verás que tengo pólizas punto es mínimo. Entonces miramos eso en unos cuantos. Esa es sólo otra constante que creé. Por lo que sólo puede seguir adelante opciones que la política de anuncios, las políticas punto es la edad mínima. Y entonces tenemos una expresión lambda donde vemos que la política requiere reclamo, y luego tenemos nuestras afirmaciones referencia a que es borde mínimo y luego el valor que esperamos. Entonces la sintaxis general para sumar política y agregar los requisitos para establecer la política al nivel más básico, algo así, ¿verdad? Solo estamos abriendo un bloque de opciones. Vemos opciones punto política de sumar. Damos nombre a la póliza. Por lo que esto fácilmente podría haber sido corriente estética. Todo lo que estoy haciendo realmente es referir cadena de constantes de una clase llamada pólizas, los arreglos militares con las fotos también. Entonces recuerda que originalmente nuestra clase de reclamos de usuario, que es nuestra clase estática con todas nuestras constantes, las cadenas son originalmente, lo tenía en otros servicios, Pero no, quiero más constantes de naturaleza similar, ¿verdad? Entonces en lugar de ponerlos todos en la identidad de lo movió a su propia carpeta, cambie el espacio de nombres en consecuencia también, no, son constantes y luego reclamos de usuario, y luego tenemos políticas uniéndolo en ese espacio de nombres. Por lo que las políticas sólo se van a almacenar en nombre de las diferentes políticas que queremos hacer cumplir en toda aplicación. Entonces en la startup solo estoy haciendo referencia a políticas extrañas, políticas. El punto es la edad mínima, que es una edad mínima de cadena. Y entonces estoy iniciando una expresión lambda donde estoy viendo que estas son las opciones son, estas son las configuraciones para nosotros en política. Entonces aquí estoy viendo Los puntos de política requieren limpios con este nombre, que es edad mínima. Y el valor. Y la verdad es que en realidad podrías enumerar valor potencial, por lo que no tiene que ser un solo archivo. Podrías venir a separar los diferentes valores posibles que esta crema necesita tener para que ese usuario sea visto como candidato legítimo para llevar a cabo una acción particular. Ahora, ¿y si quisieras más de una reclamos en una póliza en particular? Aquí se podía ver en la política y después para esta expresiones lamda, sólo vamos a arrancar en bloque de objetos, ¿verdad? Y luego se pueden ver puntos de política. Y entonces solo empieza a sumar todas las configuraciones para esa política en particular en consecuencia. Entonces solo punto y coma y luego tienes póliza sí requiere otro reclamo con estos conjuntos de valores, etcétera, etcétera, etcétera. Entonces es realmente así de fácil hacer cumplir o crear una política que la aplicación sabrá que existe. Entonces voy a volver a lo simple que tenía antes donde apenas estamos viendo adoptar política llamada es edad mínima se llaman edad mínima y luego requerir que la póliza requiere que reclamo, lo siento, es edad mínima con un valor de verdad. Entonces ahora que hemos definido la política, tenemos que ponerla en uso. Entonces vamos a nuestra página Crear. Y si miras la parte superior, he agregado un autor como filtro. Y en lugar de esto autorizar filtrar políticas iguales a lo que es el nombre de la política. Entonces esa es otra razón en absoluto. Un barco está haciendo las clases constantes y tratando de eliminar o reducir en lo posible los extremos. Porque si tienes un error tipográfico justo aquí, sería mucho más difícil averiguar por qué esto no me está dejando pasar a pesar de que claramente tengo la política de datos limpios dice que necesito es solo porque probablemente usas el mal nombre de la política o nombre de la política mal escrito. Por lo que siempre es bueno tipo de solo tener esas cuerdas en constantes por todo el lugar, están en un lugar más bien. que no tengas que usarlos por todo el lugar y luego solo haces una referencia. Entonces, con solo hacer esto, realidad eliminamos la necesidad de entrar manualmente en el usuario limpia y esto luego tratar de averiguar cuáles son los valores. Porque no, nuestro mecanismo autorizado hará todo eso por nosotros. Entonces en cualquier lugar que queramos hacer cumplir una política en particular, esto es todo lo que tienes que hacer. Y por supuesto, una vez que pongas un filtro encima de una página, anulará la política predeterminada que habría estado sentada en tu solicitud. Por lo que esto es sólo el defecto autorizado. Entonces una vez que lo pones ahí. El dinero, bueno, lo anulará y dirá, bueno, quiero autorizar con base en esta política. Entonces mientras estamos en este tema, les voy a mostrar otra forma en que realmente podríamos hacer cumplir estos filtros globales, que sería una forma más global de hacerlo en cualquier aplicación básica. Entonces donde miraba el hecho de que si estamos agregando páginas Razor tendría que ver con esto. Particularmente si lo estamos haciendo con MVC, la sintaxis se vería ligeramente diferente. Pero entonces en realidad puedo quitar todo esto y simplemente volver a los abogados de páginas o controladores AD y vistas y saber que tengo este bloque de autorización con políticas estar todo alineado, nuestras opciones están en línea, Puedo agregar una línea de opción Puedo ver opciones dot fall La política de Buck es igual a nuevo constructor de políticas de autorización. Y entonces tengo que seguir adelante e incluir la declaración de uso. Y luego en este proyecto de ley allá sólo vamos a tocar algunas otras configuraciones. Entonces el primero que voy a ver es requerir usuario autenticado. Entonces esta soy yo sentada arriba de la política de robots con autorizaciones trabajo completo. Y estamos viendo que requerimos al usuario autenticado. Y entonces se podría decir requerir reclamo. Entonces esto sería como dije, global, esto no sería personalizado un lakh supervisando. Queremos esta opción. Entonces puedes sentarte todo lo que quieras como una autorización global caída Buck política sobre lo que es la política, es básicamente ¿qué debo hacer cuando ese filtro autorizado o un filtro bajo anónimo no está presente? Entonces si uno no es prisión, dinero salvajemente, como como ponemos éste explícitamente aquí, entonces ¿qué hago? Muy similar a cómo acabamos de tener el requisito global de autorización aquí. Pero te pondrás un poco más granular con este método porque ahora podemos construir exactamente qué requisitos, qué esquemas, todo lo que queremos en la meta de puerta desde defecto antes de que acabamos de llamar Build. Y luego construir sin voz. De acuerdo, esta es mi política de caída de Buck. Siempre que no haya autor como nuestro filtro de autorización explícita con algún requisito específico ahí dentro, entonces esto es lo que quería hacer. Entonces ahora tenemos dos cosas. Statista, vamos a probar que funciona la política. Entonces lo que sea que acabemos de demostrar en esta página, cuando un usuario es menor de 18 años, no debería poder acceder a esta página. Y vamos a demostrar que todavía obtenemos el prompt predeterminado para iniciar sesión para cualquier cosa que se diga que está autorizada. Muy bien, entonces estamos aquí en nuestra aplicación y última instancia para hacer en primer lugar, no estoy autenticado. Fui a entrar en categorías. Y recuerda que se supone que las categorías son. No permite el anonimato. Por lo que los anuncios permiten anónimos, que sigo siendo capaz de navegar por porque eso permiten filtro anónimo está anulando que caen por encima de la política. Y luego cuando voy a categorías que no permiten el anonimato, me están pidiendo que inicie sesión. Entonces eso está funcionando hasta donde puedo ver. Entonces cuando hago login como cliente que es menor de 18 años, bueno, el sistema puede acceder se niega porque soy cliente dice que debería poder obtener las categorías, eso está bien. Pero cuando voy a anuncios, no debería poder crear nuevos por la política para es edad mínima. Por lo que cuando traté de crear nuevo, me están denegando el acceso. Correcto. De la misma manera. Entonces ahí mismo. No tengo que decir manualmente retorno, acceso directo local negó el sistema, la política de reserva, en combinación con mi política explícita que estoy usando para proteger el discurso, está haciendo eso por mí. Está revisando el reclamo y lo reescribió. Entonces eso es todo lo que realmente tienes que hacer. Y quieres conseguir una especie de granular con ciertos permisos. Creas las afirmaciones que conoces, las necesidades de la persona. Por lo que una persona debería poder editar, lo que otra persona debería poder editar. Simplemente asegúrate de que sean los reclamos no necesitaban en ningún momento. Y luego solo proteges tus diferentes páginas con las políticas que has alineado en tu archivo de inicio. 29. Revisión de secciones: reclamos y funciones: Muy bien chicos, así que eso es otro hito y sólo vamos a revisar lo que hemos hecho en esta sección. Entonces revisamos autorización básica, pasamos a ver cómo funciona en un blazer arriba todos los filtros estaban. Y en nuestra startup, también habíamos mirado cómo podemos hacer cumplir a ese autor como filtro globalmente en todas las páginas de Razor y por extensión MVC opciones y controladores si estás usando tal up. Desde entonces también implementamos políticas donde sabemos hacerlo más globalmente sin mezclar y mucho en la sintaxis, simplemente podemos hacer algo como esto. También miramos crear nuestras propias políticas basadas en reclamos. Por lo que las cremas son bits de información que sabemos agregar dinámicamente al usuario una vez que el semana de inicio de sesión hacen ciertas determinaciones basadas en la información que proporcionaron o en base a su usuario requerido. Y luego podemos agregar esas afirmaciones a esa identidad o al principio de reclamos antes de que ese usuario realmente se autentica en el sistema. Como resultado, podemos saber implementar políticas que nos permitan restringir o permitir ciertas acciones o privilegios con base en los reclamos de que tengan cárceles. Por lo que también habíamos echado un vistazo a los roles. Echamos un vistazo a cómo podemos permitir que un usuario seleccione el rol que desea en el sistema, y luego cómo realmente los agregamos a ese rol después. Si es un nacido para permitirles repartir el rol, entonces solo puedes agregar la regla al usuario una vez que esté iniciando sesión. Porque piensa en sitios web más grandes como Amazon en YouTube. Realmente no seleccionas el rol que quieres tener con un conos YouTuber. Simplemente saben que una vez que creas un colon, eres usuario. Por lo que en realidad te habrían puesto automáticamente como usuario. Y luego tienen otro mecanismo donde agregan sus propios admins y otras filas y así sucesivamente. Por lo que en ese punto querrías buscar la creación de los valores en el panel de administración que te permita tener control total sobre algo así. Pero para los usuarios que entran por internet, les das su papel en el sistema, y ese es su papel en el futuro. Entonces en base a tu modelo, ya sabes, saber manejar esa situación. Entonces, en última instancia, eso es todo para esta sección. Como dije, sé que habrías pasado por bastantes cosas. No es un solo zapato que se ajuste a todos. Por lo que solo estoy mostrando unos escenarios diferentes y diferentes formas en las que puedes conseguir creativo y práctico en torno a cómo aseguras tu aplicación para ti y para tus usuarios. 30. Descripción general de la sección: qué es OpenIdConnect: Oigan chicos, bienvenidos de nuevo. Por lo que en esta nueva sección vamos a estar implementando proveedores de identidad OpenID Connect en nuestro AP. Eso es un bocado, pero sólo voy a romperlo por ti. Entonces estoy en el sitio web OpenID dotnet slash Connect y lo hace bajo directamente opuesto a lo que realmente es OpenID Connect. Por lo que en pocas palabras, permite a los clientes. Clientes siendo tu sitio web, estás arriba, sea lo que sea que tu cliente o tus usuarios estén usando ese front-facing, Ese es tu cliente. Es un bajo estrés verificar la identidad de un usuario final en base a la autenticación y realizada por un servidor de autorización, así como obtener información básica del perfil del usuario final, en nuestros riesgos como manera. Entonces en pocas palabras, cualquier momento vas a una app y te permite decir, enviando nuestro login con Facebook o con Google, ¿verdad? Necesito detener ese asiento de Potnia. Pasa a Google y tendrás que escribir tus credenciales o tal vez ya estás conectado a Google en esa máquina o en ese dispositivo. Y solo te permite pasar por y, y de repente estás firmado en los nuevos sitios web tiene toda la información que ha proporcionado Google. Google proporciona un Servicio OpenID Connect como esas ventanas, como este Facebook. Y lo estamos viendo en las partes anteriores donde estábamos agregando todos estos servicios en Twitter y Google y Microsoft y Facebook. Todos esos se pueden duplicar como servidores OAuth. Entonces proveedor de auth, lo siento, Entonces en esta sección realmente vamos a implementarlo. No lo hicimos entonces porque fue un poco temprano en el juego. Y te di algunas técnicas, pero vamos a revisar esas cosas. Y lo que vamos a hacer es enfocarnos en hacerlo con Google. Pero una vez que saquemos a Google del camino, al menos entenderías que si quisieras apoyar a todos esos otros y te toca, dale a tus usuarios todas esas opciones, entonces al menos tendrás una apreciación de cómo se puede hacer eso. Entonces en la siguiente sección que vamos a hacer es pasar por cómo puedes ir a conseguir la clave y el secreto de Google. Y luego nos integraremos por completo en nuestro AP en el futuro. 31. Up a las creaciones de Google OAuth: Muy bien chicos, así que en esta lección vamos a caminar rápidamente por cómo podemos conseguir la clave Klan y un secreto que necesitamos de Google para permitirnos autenticarnos contra cuentas de Google. Ahora puedes navegar a la plataforma Cloud yendo a la consola dot cloud dot google.com. Tendrás que iniciar sesión con una cuenta de Google y luego obtendrás acceso a este panel de control. Y eso sería similar para cualquiera de los demás proveedores. Tendrás que iniciar sesión con una cuenta que pertenezca a ese proveedor para poder acceder al backend donde te dan las llaves, ¿no? Entonces después de que hayas ingresado o creaste unos conos de Googler y has accedido a una pantalla similar a ésta. Quieres ir a credenciales y luego vas a hacer clic en crear credenciales. Entonces también si todas estas opciones estamos eligiendo OAuth ID de cliente porque eso es lo que buscamos. Y luego especificamos qué tipo de aplicación. Yo sólo voy a decir aplicación web donde ves que tienes diferentes opciones y puedes darle un nombre específico si lo deseas, clasificados de compañero SQL o lo que sea tu proyecto. Y luego vas adelante y pegas a Crear. Y una vez que golpees crea, eso te dará esa identificación y eso secreta, y eso es todo. Por lo que es necesario copiar estos valores. Y recuerda que tenemos que usar estos en nuestra app para que quieras mantenerlos seguros, menos lo que no carguen el JSON o no, pero mantenerlos seguros o no, no tiene sentido si intentas copiar el mío porque para el momento estás haciendo este curso, todos modos habría destruido la evidencia. Por lo que te recomiendo que lo pruebes, obtienes tu propia clave y secreto, y luego puedes tener tu propia experiencia controlada en tu extremo. Entonces, cuando regresemos, estaremos integrando estos a nuestro AP. 32. Añade Google Auth a la aplicación: Entonces después de que hayamos recuperado o claves, vamos a saltar de nuevo hacia arriba y vamos a ir a la clase de inicio donde queremos agregar un nuevo bloque que vamos a ver servicios que agregan autenticación. Entonces recuerda la última vez o antes en el curso cuando estamos haciendo esto, habíamos agregado el add Google a los servicios, el bloque de autenticación donde estábamos especificando que estamos usando la cookie off. Muy bien, Así que en realidad podríamos haberla quitado porque hicimos todas las cosas que manejan todo eso. Bueno, no, podemos volver por ello. Y vamos a añadir en Google, ¿verdad? Y cualquiera que sea el otro proveedor, asegúrate de contar con la biblioteca requerida. Entonces para esa en caso de que haya quitado las bibliotecas ya que no la usamos. Definitivamente necesitas tener Microsoft dot ASP, Core Authentication Google. Entonces si no lo tienes, solo puedes ir y encontrarlo en paquetes NuGet, ¿verdad? Y aún tengo todos los demás paquetes de los otros proveedores que tal vez no terminemos usando en este momento. Pero esas son las bibliotecas que necesitas en caso de que elijas una de las anteriores, y no necesariamente Google como estoy demostrando. Por lo que volver a la startup después de que hayamos agregado Google quiere decir Opciones. Y luego tenemos nuestro bloque de objetos donde estamos viendo opciones de Google. Esa tendencia ID es ésta. Y el secreto es que no, ya discutimos que es una mala idea para uno pone el ID y el valor secreto está muerto en la startup, la alternativa probablemente habría sido la configuración de la aplicación, pero luego entre los dos de ellos, definitivamente lo estaremos engañando a control de fuentes. Y si se trata de un control fuente de acceso público, como GitHub, el repositorio es público, entonces esa es una muy mala idea. Entonces lo que queremos hacer es agregarlos al secreto. Entonces solo tienes que hacer clic derecho en nuestros proyectos. Y luego vamos a Manage Users secret, que luego nos dará nuestro archivo de configuración secreto, ¿verdad? Por lo que ya me lo había reequipado con el ID de cliente y el secreto. Entonces no, prácticamente lleguemos a ver cómo se usa. Entonces tomaremos este valor. Entonces ese es el ID del cliente. Ponlo aquí, este es un ID de cliente para Google. Y luego hacemos lo mismo con el secreto, lo pone aquí por el secreto. Y una vez más, sigues ese mismo patrón para Facebook, Twitter, etcétera, etcétera. ¿Verdad? Entonces una vez que hagamos todo eso, lo que vamos a hacer es decir configuración, configuración. Y la clave que queremos sería Google colon ID del cliente. Por lo que Google colon ID del cliente. Y entonces lo repetiríamos por el secreto. Entonces es un colon y yo hice secretos de secuencia. Entonces es bu colon cliente secreto y justo eso, que hemos agregado de forma segura las claves y secretos de autenticación son clave y secreto para nuestra aplicación? No. Después de haber agregado esta configuración de autenticación y mira lo que sucede cuando vamos a la pantalla de inicio de sesión. A la derecha, vas a ver que tienes el servicio google para usar rojo. Entonces recuerda, cuando hicimos el dinero, bueno, los raros que en realidad los enumeraron todos los Facebook, Twitter, etcétera, etcétera. Enumeramos el modo, conoce la página de inicio de sesión de andamios ya tenía el mecanismo, recuerdas por aquí tenía un poco de escrito sobre los proveedores externos y así sucesivamente. Porque lo que está pasando en el archivo o en el código detrás más bien es que lo es, déjame simplemente encontrar rápidamente lógica de inicio de sesión y se pone, es decir, Consígueme los esquemas de autenticación externa cortesía de arena en Manager, san y monitor es en realidad va a ir a la startup y decir, ¿hay algún otro esquema definido aquí en la startup que vimos, oh sí, tienes Google. De acuerdo, Entonces agregaremos el botón de Google para ti. ¿ Verdad? Entonces en la página de inicio de sesión, si no hay ninguno que obtengan lo correcto o lo contrario, enlistarlos. Y para cada uno, solo crea un botón con el nombre del proveedor. Eso es todo lo que realmente está pasando, ¿verdad? Entonces, a veces, ya sabes, una riña estas cosas y las vemos nosotros mismos. No necesitamos eso, simplemente los eliminaré, pero siempre es bueno entender por qué ves ciertas cosas un cierto tiempo, ¿qué configuraciones se necesitan para que ciertas cosas funcionen? Y esta es sin duda una de las configuraciones que rara vez se ve. La gente en realidad se toma el tiempo o pasar paso a paso y te ayuda a entender. Entonces así es básicamente como comenzarías a agregarlos. Y podría a tantos como ustedes encadenan aquí como vimos con el Twitter, Facebook, etcétera, etcétera. Tantos como tu cadena, vas a conseguir esos botones automáticamente. Entonces solo estoy haciendo esto paso a paso poco. Cuando volvamos, probaremos juntos cómo funciona esa lógica de inicio de sesión. 33. Prueba de inicio de sesión de Google Auth: Muy bien chicos, Así que estamos de vuelta y el objetivo esta vez es verificar que nuestro bitácoro, en realidad funciona. Por lo que el primer paso 1 es ir a la página de inicio de sesión. Por lo que el paso dos es hacer clic en el botón azul. Entonces cuando hacemos clic en Google, lo que vas a notar es que está navegando lejos de nuestro derecho. Entonces estamos en localhost algo, y luego cuando hacemos clic en eso, en realidad está navegando siempre. Así que asegúrate de tener Internet cuando estés haciendo esto fuera de curso. Y está tratando de ir a una barra de colon google.com inicio de sesión y nos están dando un error. Entonces el error aquí es un 400, lo que significa mala solicitud. Y esta es la razón por la que redirecciona URI desajuste. Entonces te dan un poco de lectura. Y de nuevo, SEO está haciendo algo de lectura sólo para asegurarme de que lo entendí completamente. Y si haces clic en Solicitar detalles, entonces te van a decir, si eres el desarrollador se asegura de que estos Detalles de Solicitud cumplan con las políticas de Google. Entonces te están dando cuál debe ser el URI de redireccionamiento, que es localhost, que saben de dónde vienes. Pero necesitas tener ese endpoint en su suela. Voy a copiar esto y luego voy a saltar de nuevo a mi administrador de credenciales y a ese cliente que habíamos creado, el mismo con la App ID. Y el secreto, lo que quieres hacer es bajar a los URI de redireccionamiento autorizados. Entonces vas a agregar a Uri y luego poner esa URL o urea, ese enlace. Y luego haces clic en Guardar. Y luego una vez que eso se guarde, lo que voy a hacer es simplemente dar clic en Aceptar. Y luego vamos a volver a hacer clic en Google. Y esta vez vas a ver que no es pedirme que inicie sesión con mi ícono. Entonces voy a hacer justamente eso. Y después de proporcionar mi dirección de correo electrónico, contraseña y potencialmente ser desafiado por dos si una verificación por parte de Google, no soy llevado a esta página donde dice, ¿quieres asociar tus conos de Google up? Y luego te dan la dirección de correo electrónico y te piden que te registres. Ahora verías que la página hace que navega a través es identidad slash slash inicio de sesión externo. Y la URL de retorno es justo lo que sea el eje, ¿verdad? Entonces esa es la página que puedes modificar. Sepa si quería agregar o permitir al usuario agregar más detalles que solo su dirección de correo electrónico. Porque esta dirección de correo electrónico se va a duplicar como su nombre de usuario y no tendrán nombre, apellido, etcétera. supuesto, probablemente puedas modificar un poco más la configuración con Google para ver obtener más información de Google, un barco, este usuario para que pueda llenar en mi sistema. No voy a entrar en todas esas cosas, ¿verdad? No. Por lo que puedes tener cuidado de eso ahora, otra cosa que puedes terminar obteniendo es uno de esos 400 errores después de intentar iniciar sesión con credenciales de Google, podrías obtener esa misma página de 400. Si lo haces, probablemente puedas volver aquí y simplemente agregar la URL sin este lijado Google solo agrega eso como otro URI. Porque lo que pasa es que estas URL le dicen a Google lo mi cliente debe buscar son deben navegar a cuando termine con Google. Entonces nuestro lo que Google debe intentarlo para navegar de nuevo a cuando se termine de hacer lo suyo. Entonces eso es parte de esa seguridad. Recuerda cuando estábamos hablando de configurar el registro seguro y el inicio de sesión, cómo siempre hacemos el redireccionamiento, los redireccionamientos locales para que nos aseguremos de que estamos redireccionando a una página en nuestro AP que es similar a lo que Google está intentando lograr aquí, para ver qué dominio siempre debo buscar cada vez que haya terminado de autenticar a esta persona? Por lo que puede que termines necesitando agregar otra entrada y está en sangre está en Yuri. ¿ Hizo ahí y no guardó ningún daño hecho, leyó o escribía ningún buck entero a nuestro arriba. Una vez que haga clic en Registrarse, voy a necesitar confirmar conos. Eso está bien. Sabemos que ese es el procedimiento estándar, pero quería llevarnos a la base de datos para que podamos ver lo que está sucediendo. Por lo que en la base de datos, vas a ver a un nuevo usuario creado con la dirección de correo electrónico. Simplemente puedo hacer esto a cierto desde aquí. Y se requiere el sello de seguridad, todas estas cosas, no hay contraseña, no hay contraseña porque no estamos manejando la contraseña para este usuario y este es un usuario de Google. Por lo que todas esas cosas que los resultados del usuario se crean, si vamos con los inicios de sesión de usuario de ASP NET también notarían, que obtenemos una nueva entrada donde conocemos al proveedor, la clave del proveedor, el nombre para mostrar, y el usuario a quien es este inicio de sesión atribuido. 34. Revisión de sección Auth: Muy bien chicos, así que en esta sección echamos un vistazo a cómo se puede configurar la autenticación de Google. Y por extensión, se pueden aplicar las mismas técnicas para otros Proveedores de Auth de terceros. Solo usamos Google porque tal vez más que, más que probablemente probablemente tengan una cuenta de Gmail o cuenta de Google. Y es mucho más fácil simplemente empezar con eso. Ambas técnicas se pueden aplicar en todo el tablero. Ciertas cosas que tenemos que hacer. Una, tenemos que ir a esa plataforma de terceros, sea lo que sea, ya sea Google o windows, o Twitter o Facebook, tenemos que ir ahí, registrar un nuevo cliente web. Y eso nos daría la clave y credenciales de autenticación necesarias que necesitamos para autorizar nuestra app. También necesitamos poner en autorizar direcciones URL de redireccionamiento basadas en nuestras direcciones de dominio. Y luego después de hacer eso, se nos animaría a volver a nuestra aplicación y agregar usuarios secretos son hasta secretos y almacenar ahí nuestro ID de cliente y secreto en lugar de en la configuración regular o en texto plano en el código, ¿no? Por lo que querrías agregar esos secretos al AP, acceder a ellos en consecuencia. Agregamos el esquema de autenticación, o esquemas basados en cuántos tengas. Y luego una vez hecho eso, la app los renderizará automáticamente en base al código de calderas de nuestras Páginas de inicio de sesión y registro de andamios. Conoce después de que hayamos podido autenticarnos como titular de cuenta de Google, entonces podremos iniciar sesión y aquí se aplicarán los mismos privilegios que tenía un usuario regular. No, claramente vas a ver que hay ciertas cosas que faltan porque no sabemos de la fecha de nacimiento, no sabemos nombre completo. Por lo que hay ciertos bits de información que podemos permitir que el usuario administre posteriormente o podemos transcribir desde el tercero proveedor dado el grado de diligencia y apalancamiento que dan. Porque sólo hay ciertos bits estándar de información que van a dar a buck. Entonces nombre identificador, estamos consiguiendo eso. Seguro. Bueno, su nombre, dirección de correo electrónico, esos vienen del registro de usuario. Y aquí dentro vemos que esto tiene un método de autenticación de Google. Si vamos a inicios de sesión externos, verás Google. Por lo que los datos personales y todo. Seguramente querrías permitirles manejar esas cosas en su perfil en cuanto al dinero. Por lo que número de teléfono, puede agregar nombre, apellido, fecha de nacimiento. Entonces cargo a esa tercera persona autenticada para crear sus conos, pero luego rellena los detalles después. Entonces hay una serie de maneras, como dije, no es una talla única para todos. Tienes que encontrar el tetany que funcione para ti y tus usuarios y tu situación. Dicho esto, sin embargo, hemos configurado con éxito la autenticación de Google en nuestro núcleo de dotnet up. 35. Conclusión: Muy bien chicos, así que hemos llegado a otro hito y hemos completado este curso. Este curso te enseñó cómo implementar la autenticación y autorización en tu aplicación dotnet Core. No sólo te enseñó a hacer eso, porque la realidad es que en realidad podemos sacar toda esa característica establecida de la caja en el nivel más básico. Pero exploramos los entresijos de cómo encajan todas las piezas para darnos una agradable aplicación segura. También miramos el hecho de que hay que tener cuidado cuando estás equilibrando las medidas de seguridad con usabilidad porque entonces podrías hacer que tu AP sea tan seguro que difícilmente sea utilizable. Y en el otro lado, no quieres que sea muy utilizable pero no muy seguro. Por lo que siempre quieres tomar esas cosas en consideración. Siempre es una cosa que hacer. Un tutorial o un curso donde te estamos enseñando a construir este sistema y espolvorear un poco de esta y aquella característica. Pero es otra cosa cuando te sientas y miras ese conjunto de funciones y esa biblioteca en su totalidad y aprecias plenamente todas las entresijos que te pueden guiar con tus consideraciones de desarrollo y diseño en el futuro. En este curso, prácticamente hemos agotado lo básico. Y miramos los fundamentos y miramos algunas cosas avanzadas que miramos para que puedas extender lo que sale de la caja. Veremos cómo puedes aprovechar lo que sale de la caja y cómo encajan todas estas cosas. Por lo que quiero agradecerte por quedarte conmigo a través de este viaje. Y espero que puedas tomar lo que has aprendido de este curso y construir una hermosa la aplicación segura para ti y tus usuarios.