2014-07-11 10 views
11

Così sto aggiornando un provider di identità asp.net Open Source per MongoDB lavorare con Asp.Net Identity 3.0 (aka vNext). Finora sono stato in grado di registrare il provider e creare gli utenti, ma quando si utilizza il SignInManager se un nome utente corretto/Passo è previsto ottengo l'erroreCome sono i nomi dei tipi di autenticazione registrati in asp.net vNext

InvalidOperationException: I seguenti tipi di autenticazione non erano accettate: Microsoft.AspNet .Identity.Application

ho rintracciato l'errore a qui https://github.com/aspnet/HttpAbstractions/blob/dev/src/Microsoft.AspNet.PipelineCore/DefaultHttpResponse.cs

ma io non riesco a vedere dove il nome SignInContext.Accepted è sempre aggiunto alla SignInContext.

Sto usando le versioni Alpha-2 di tutte le librerie vNext che vengono utilizzati in vs14 CTP2

Sotto è il mio 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; 
     } 
    } 
+0

Sarei veramente interessato nel codice/pacchetto che permette di utilizzare MongoDB con Identità sotto vNext. Puoi per favore condividerlo? –

+0

Quindi è ancora abbastanza grezzo e non implementa ancora tutte le funzionalità, ma è utilizzabile. Proverò a lanciarlo su Github quando ne avrò l'occasione nei prossimi due giorni. –

+0

Nel frattempo ho anche implementato la mia soluzione. –

risposta

8

venuto fuori che avevo messa a punto prima della MVC CookieAuthentication in modo che AuthenticationType non sia stato registrato in MVC quando ha tentato di autenticare l'utente. Dato che MVC dipende dall'autenticazione, ho dovuto solo eseguirlo e registrarlo prima di MVC.