簡體   English   中英

如何在ASP.NET Core 1.0中配置身份驗證

[英]How to configure authentication in ASP.NET Core 1.0

我正在嘗試向我的應用程序添加身份驗證,我正在運行實體框架,但現在我想對用戶進行身份驗證,但是在配置構造函數中配置它遇到了很多問題。

例如,在許多教程中,他們提供的代碼不再像我那樣工作

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

它告訴我,我需要顯式指定類型參數,但這是本教程中的內容嗎?

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

我很難理解執行此操作的正確方法,我要做的就是在用戶登錄時對用戶進行身份驗證。

這是我的project.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"
  },

和我的配置:

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

任何幫助將不勝感激,我用盡了所有的想法,我已經嘗試了其他幾個具有相同結果的站點(這種方法是否有所改變?)。

您可以在RC1中通過兩種方式配置身份:

1-當您添加身份時

例:

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-使用IdentityOptions

例:

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

更多信息: ASP.NET身份驗證文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM