En el anterior ASP.NET MVC, no era una opción para redirigir a la acción login, si el usuario no se ha autenticado.

Necesito lo mismo con ASP.NET Core, por lo que yo:

  1. creado un ASP.NET proyecto Básico, de la plantilla de Visual Studio
  2. añadido [Authorize] a algunas medidas arbitrarias
  3. abrió la correspondiente vista en mi navegador

No espero una redirección porque no he configurado. PERO, se redirige automáticamente a la acción login!

Dónde/cómo es esta opción?

El marco es capaz de encontrar el inicio de sesión en la acción, como se utiliza la convención sobre configuración.
Si es que no está documentado en ninguna parte, entonces es una forma de magia. En realidad, incluso si está documentado. Hay demasiado de esta sucediendo hoy en día, especialmente en ASP.NET.

OriginalEl autor grokky | 2016-10-24

4 Comentarios

  1. 2

    Puede configurar la ruta de acceso mediante CookieAuthenticationOptions clase.

    Algo como esto.

    app.UseCookieAuthentication(new CookieAuthenticationOptions {
            LoginPath = new PathString("/Login/"),
            AuthenticationType = "My-Magical-Authentication",
            //etc...
            },
    });
    Vi que en este artículo, pero el que dice que «el Uso de la Cookie de Middleware de sin ASP.NET Núcleo de la Identidad». Estoy usando la Identidad.
    Además, no sólo quiero controlar esta configuración, quiero entender de dónde/cómo está sucediendo. No entiendo cómo lo sabe a encontrar mi nombre de vista. Eso es lo que quiero entender.
    Por favor, busque en este código github.com/aspnet/Security/blob/dev/src/…

    OriginalEl autor Anuraj

  2. 8

    Con el actual aspnet la versión core (2.1.0), esto ha cambiado, ahora podemos usar las extensiones:

       services.ConfigureApplicationCookie(options => options.LoginPath = "/login");

    o

     services
             .AddAuthentication()
             .AddCookie(options =>
             {
                 options.LoginPath = "/login";
                 options.LogoutPath = "/logout";
             });

    Puedes ver más acerca de la migración a 2.0 en este artículo.

    OriginalEl autor animalito maquina

  3. 4

    Para cualquiera que esté interesado puede realizarse también con el AddIdentity proveedor de servicios.

    services.AddIdentity<User, IdentityRole>(options =>
        {
            options.Cookies.ApplicationCookie.AutomaticAuthenticate = true;
            options.Cookies.ApplicationCookie.AutomaticChallenge = true;
            options.Cookies.ApplicationCookie.LoginPath = "/Auth/Login";
        })
        .AddEntityFrameworkStores<MehandiContext>()
        .AddDefaultTokenProviders();

    Y como se explica aquí: https://stackoverflow.com/a/41643105/5784635

    He intentado esto, en abril de 2017 y "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0" no redirecciona, tuve que usar el 1.0.1 versión

    Funciona muy bien para mí en la versión 1.1.0 (julio de 2017)
    Anton / @Wouter, es lo que estáis utilizando .NETCore?
    El uso de .net core 1.1

    OriginalEl autor Anton Toshik

  4. -2

    No es necesario agregar cookie de autenticación. Manténgalo SECO y inicializar el construido en el auth forma con lo que quieras.

    Paso 1: Hacer andamiaje .NET Core 2.1 aplicación web con la Autorización Individual:

    dotnet new mvc -o YourAppName --auth Individual

    Paso 2: vamos a decir que su protegido se fue en un controlador llamado ClockinController, puede designar la redirección así:

    @* from _LoginPartial.cshtml change this line *@
            <li><a asp-area="Identity" asp-page="/Account/Login" asp-route-returnUrl="@Url.Action("Index", "Clockin")">Login</a></li>

    También llamar a una función de JavaScript, si es necesario agregar lógica condicional para el returnUrl.

    OriginalEl autor Ryan Dines

Dejar respuesta

Please enter your comment!
Please enter your name here