2016-04-13 22 views
5

Tôi đang cố gắng thêm xác thực vào ứng dụng của mình, tôi có khung thực thể đang chạy nhưng bây giờ tôi muốn xác thực người dùng nhưng tôi đang chạy vào rất nhiều vấn đề cấu hình nó trong cấu hình constructor.Làm thế nào để cấu hình xác thực trong ASP.NET Core 1.0

Ví dụ trong rất nhiều hướng dẫn họ cung cấp mã mà không còn hoạt động như thế nào nếu tôi làm

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

Nó nói với tôi rằng tôi cần phải xác định các đối số loại một cách rõ ràng, nhưng đây là những gì có trong hướng dẫn ?

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

Tôi gặp một thời gian khó khăn để hiểu một cách đúng đắn để làm điều này là gì, tất cả tôi muốn làm là xác thực người dùng khi anh/cô ấy đăng nhập vào.

Đây là dự án của tôi. 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" 
    }, 

và cấu hình của tôi:

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); 
} 

Bất kỳ trợ giúp nào sẽ được đánh giá cao, tôi đang hết ý tưởng, tôi đã thử một số trang web khác với cùng một kết quả (đã làm theo cách này để thực hiện thay đổi?).

+0

Lưu ý rằng ASP.NET Core 1.0 vẫn chưa hoàn tất. Hướng dẫn này có vẻ là từ tháng 5 năm ngoái, gần một năm trước. Rất nhiều đã thay đổi kể từ đó. Cố gắng tìm một hướng dẫn mới hơn để giúp bạn, tốt nhất là từ các phiên bản RC hiện đã hết. –

+0

Bạn không thể tìm thấy, bạn có liên kết bạn có thể giúp tôi không ?, có thể tôi đang tìm kiếm sai. cảm ơn bạn –

+0

Xin vui lòng không trộn các phiên bản gói, nó kêu gọi rắc rối. Project.json của bạn là một hỗn hợp hỗn hợp của RC1, beta4, beta5, beta7 và beta8. – Tseng

Trả lời

9

Bạn có thể cấu hình tính theo hai cách trong RC1:

1- Khi bạn đang thêm danh tính

Ví dụ:

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- Sử dụng IdentityOptions:

Ví dụ:

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); 
      } 
     }; 
    }); 
} 

Thông tin khác: ASP.NET Authentication Doc

Các vấn đề liên quan