2016-04-13 24 views
5

Próbuję dodać uwierzytelnianie do mojej aplikacji, mam strukturę encji, ale teraz chciałbym uwierzytelnić użytkownika, ale jestem uruchomiony na wiele problemów konfigurowanie go w konfiguracji konstruktor.Jak skonfigurować uwierzytelnianie w programie ASP.NET Core 1.0

Na przykład w wielu tutoriali, które świadczą kodu, który nie działa tak jakby zrobić

// Configure ASP.NET Identity to use our Identity-based application context 
    services.AddAuthentication() 
     .AddIdentity() 
     .AddEntityFrameworkStores() 
     .AddDefaultTokenProviders(); 

Mówi mi, że muszę podać argumenty typu jawnie, ale to, co jest w poradniku ?

https://shellmonger.com/2015/05/29/asp-net-mvc5-identity-part-1-the-database/

Mam trudno jest zrozumieć, co jest właściwym sposobem w ten sposób, wszystko, co chcesz zrobić, to uwierzytelnienia się użytkownika, gdy on/ona się zaloguje.

Oto mój projekt. json

"dependencies": { 
    "EntityFramework.Commands": "7.0.0-rc1-final", 
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final", 
    "EntityFramework.Core": "7.0.0-rc1-final", 
    "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final", 
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final", 
    "Microsoft.AspNet.Identity": "3.0.0-rc1-final", 
    "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final", 
    "Microsoft.AspNet.Authentication": "1.0.0-rc1-final", 
    "Microsoft.AspNet.Authorization": "1.0.0-rc1-final", 
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final", 
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final", 
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final", 
    "Microsoft.AspNet.Server.WebListener": "1.0.0-rc1-final", 
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final", 
    "Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta5", 
    "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta4", 
    "Microsoft.Framework.Logging": "1.0.0-beta7", 
    "Microsoft.Framework.Logging.Console": "1.0.0-beta8", 
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final" 
    }, 

i moja konfiguracja:

public class Startup 
{ 
    public IConfigurationRoot Configuration { get; set; } 

    public Startup() 
    { 

     var builder = new ConfigurationBuilder() 
     .AddJsonFile("config.json") 
     .AddJsonFile($"config.json", optional: true); 
     builder.AddEnvironmentVariables(); 
     Configuration = builder.Build(); 
    } 
    // This method gets called by the runtime. Use this method to add services to the container. 
    // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940 
    public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddEntityFramework() 
     .AddSqlServer() 
     .AddDbContext<OrganizationsAppContext>(options => 
      options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])); 

     // Specify the configuration of our Application database context 
     services.Configure<Option>(options => 
     { 
      options.DefaultUserName = Configuration.Get("DefaultUser:Username"); 
      options.DefaultUserPassword = Configuration.Get("DefaultUSer:Password"); 
     }); 

     // Configure ASP.NET Identity to use our Identity-based application context 
     //services.AddAuthentication() 
     // .AddIdentity() 
     // .AddEntityFrameworkStores() 
     // .AddDefaultTokenProviders(); DOES NOT WORK! 

     services.AddMvc(); 
    } 

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
    public void Configure(IApplicationBuilder app) 
    { 
     app.UseIISPlatformHandler(); 
     app.UseMvc(); 
     app.UseDefaultFiles(); 
     app.UseStaticFiles(); 
     app.UseIdentity(); 
    } 

    // Entry point for the application. 
    public static void Main(string[] args) => WebApplication.Run<Startup>(args); 
} 

Każda pomoc byłaby doceniona, brakuje mi pomysłów, wypróbowałem kilka innych stron z tym samym wynikiem (czy w ten sposób to się zmieniło?).

+0

Należy zauważyć, że środowisko ASP.NET Core 1.0 nie zostało jeszcze zakończone. Samouczek wydaje się pochodzić z ubiegłego maja, prawie rok temu. Od tego czasu wiele się zmieniło. Postaraj się znaleźć bardziej aktualny samouczek, który Ci pomoże, najlepiej z wersji RC, które są obecnie niedostępne. –

+0

Nie udało się znaleźć, czy masz link, z którym możesz mi pomóc ?, może szukam go źle. dziękuję –

+0

Proszę nie mieszać wersji pakietu, to wymaga kłopotów. Twój project.json to chaotyczna mieszanka rc1-final, beta4, beta5, beta7 i beta8. – Tseng

Odpowiedz

9

tożsamość można skonfigurować na dwa sposoby w RC1:

1- Podczas dodawania tożsamości

Przykład:

services.AddIdentity<User, Role>(config => { 
    // Config here 
    config.User.RequireUniqueEmail = true; 
    config.Password = new PasswordOptions 
    { 
     RequireDigit = true, 
     RequireNonLetterOrDigit = false, 
     RequireUppercase = false, 
     RequireLowercase = true, 
     RequiredLength = 8, 
    }; 
}).AddEntityFrameworkStores<ApplicationContext, int>() 
    .AddDefaultTokenProviders(); 

2- Zastosowanie IdentityOptions:

Przykład:

services.Configure<IdentityOptions>(options => 
    { 
     options.Password = new PasswordOptions 
     { 
      RequireDigit = true, 
      RequireNonLetterOrDigit = false, 
      RequireUppercase = false, 
      RequireLowercase = true, 
      RequiredLength = 8, 
     }; 
     options.Cookies.ApplicationCookie.Events = new CookieAuthenticationEvents 
     { 
      OnRedirectToLogin = ctx => 
      { 
       ctx.Response.StatusCode = (int)HttpStatusCode.Unauthorized; 
       return Task.FromResult<object>(null); 
      } 
     }; 
    }); 
} 

Więcej informacji: ASP.NET Authentication Doc