身份验证类型名称如何在 asp.net vnext 中注册

Posted

技术标签:

【中文标题】身份验证类型名称如何在 asp.net vnext 中注册【英文标题】:How are Authentication type names registered in asp.net vnext 【发布时间】:2014-09-01 14:36:39 【问题描述】:

因此,我正在更新 MongoDB 的开源 asp.net 身份提供程序,以使用 Asp.Net Identity 3.0(又名 vnext)。到目前为止,我已经能够注册提供程序并创建用户,但是在使用 SignInManager 时,如果提供了正确的用户名/密码,我会收到错误

InvalidOperationException:以下身份验证类型不是 接受:Microsoft.AspNet.Identity.Application

我已将错误追踪到此处 https://github.com/aspnet/HttpAbstractions/blob/dev/src/Microsoft.AspNet.PipelineCore/DefaultHttpResponse.cs

但我似乎看不到将 SignInContext.Accepted 名称添加到 SignInContext 的位置。

我正在使用 VS14 CTP2 中使用的所有 vnext 库的 Alpha-2 版本

下面是我的 Startup.cs

public void Configure(IBuilder app)
    
        try 
            // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940
            var configuration = new Configuration();
            configuration.AddJsonFile("config.json");
            configuration.AddEnvironmentVariables();

         //   app.UseLogRequests("try");
            app.UseErrorPage(ErrorPageOptions.ShowAll);
            app.UseServices(services =>
            

                services.AddIdentity<MyUser>()
                .AddMongoDB<MyUser>(configuration.Get("Data:MongoIdentity:ConnectionString"), configuration.Get("Data:MongoIdentity:DBName"))
                .AddHttpSignIn<MyUser>();


                // Add MVC services to the services container
                services.AddMvc();
            );

            // Add static files to the request pipeline
            app.UseStaticFiles();

            app.UseMvc(routes =>
            
                routes.MapRoute(
                    name: "default",
                    template: "controller/action/id?",
                    defaults: new  controller = "Home", action = "Index" );

                routes.MapRoute(
                    name: "api",
                    template: "api/controller/action",
                    defaults: new  action = "Index" );
            );

            // Add cookie-based authentication to the request pipeline
            app.UseCookieAuthentication(new CookieAuthenticationOptions
            
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                LoginPath = new PathString("/Account/Login"),
            );
        
        catch (Exception ex)
        
            Console.Write(ex.ToString());
            throw;
        
    

【问题讨论】:

我会非常感兴趣的代码/包,它可以在 vNext 下使用带有 Identity 的 MongoDB。可以分享一下吗? 所以它仍然相当原始,还没有实现所有功能,但可以使用。我会在接下来的几天里有机会时尝试把它扔到 Github 上。 同时我也实现了我的解决方案。 【参考方案1】:

原来我在 CookieAuthentication 之前设置了 MVC,所以当它尝试对用户进行身份验证时,AuthenticationType 没有在 MVC 中注册。由于 MVC 依赖于身份验证,因此我只需要在 MVC 之前将其升级并注册。

【讨论】:

以上是关于身份验证类型名称如何在 asp.net vnext 中注册的主要内容,如果未能解决你的问题,请参考以下文章

在 asp.net vnext 上使用不记名令牌身份验证刷新令牌

如何更改 asp.net identity 3 (vnext) 使用的表名?

从 ASP.NET vNext beta5 移动到 beta7 后 JWT Bearer 令牌身份验证错误

如何在 ASP.NET 5 MVC 6 (vNext) 中定义 Identity 的密码规则?

在 ASP.NET vNext 中使用 Ninject 时出现编译器错误 CS0246(未找到类型或命名空间)

使用 AspNet.Security.OpenIdConnect.Server (ASP.NET vNext) 进行自定义生命周期验证