2017-09-14 2 views
0

Da ich nicht gut genug in der Authentifizierung sind und ich eine benutzerdefinierte Authentifizierung für den ".Net Core 2.0" portieren möchte brauche ich Hilfe. Es gibt einige ähnliche Fragen, aber meine ist ein bisschen anders. Der Benutzer kann sich einfach am Projekt anmelden und abmelden und muss nur die Anmelde-URL für die Zeit festlegen, zu der der Benutzer nicht angemeldet ist und auf die Anmeldeseite umleiten sollte.Legen Sie die Login-URL in ASP.NET MVC Core 2.0

Ich habe bereits überprüft (this, this oder mehrere andere Seiten, aber sie sind meist veraltet - auf ältere Versionen in Verbindung stehend - oder sie passen nicht in meinem Fall) Mein Startup.cs:

// 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 https://go.microsoft.com/fwlink/?LinkID=398940 
    public void ConfigureServices(IServiceCollection services) 
    { 
     var builder = services.AddMvc(options => { 
      options.ModelBinderProviders.Insert(0, new Olive.Mvc.OliveBinderProvider()); 
     }) 
     .AddJsonOptions(options => 
     { 
      options.SerializerSettings.ContractResolver = new Newtonsoft.Json.Serialization.DefaultContractResolver(); 
     }) 
     .ConfigureApplicationPartManager(manager => 
     { 
      var oldMetadataReferenceFeatureProvider = manager.FeatureProviders.First(f => f is MetadataReferenceFeatureProvider); 
      manager.FeatureProviders.Remove(oldMetadataReferenceFeatureProvider); 
      manager.FeatureProviders.Add(new ReferencesMetadataReferenceFeatureProvider()); 
     }); ; 

     services.AddSingleton<IUserStore<User>, UserStore>(); 
     services.AddSingleton<IRoleStore<string>, RoleStore>(); 
     services.AddIdentity<User, string>(); 
     services.AddAuthentication(IdentityConstants.ApplicationScheme) 
      .AddCookie(opt => opt.LoginPath = "/login"); 

     // Adds a default in-memory implementation of IDistributedCache. 
     services.AddDistributedMemoryCache(); 

     services.AddSession(); 
    } 

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 
    public void Configure(IApplicationBuilder app, IHostingEnvironment env) 
    { 
     if (env.IsDevelopment()) 
     { 
      app.UseDeveloperExceptionPage(); 
      app.UseBrowserLink(); 
     } 
     else 
     { 
      app.UseExceptionHandler("/Home/Error"); 
     } 

     app.UseAuthentication(); 

     app.UseStaticFiles(); 

     app.UseSession(); 

     app.UseMvc(routes => 
     { 
      //routes.MapRoute(
      // name: "default", 
      // template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 
    } 
+0

Haben Sie den Controllers- und Aktionsmethoden, die Sie schützen möchten, das Autorize-Attribut hinzugefügt? – ssimeonov

+0

Ja, tat ich. Das Problem ist, dass der Benutzer zur falschen URL weitergeleitet wird ("/ Account/Login" statt "/ Login"). –

+1

https://Stackoverflow.com/a/45922216/9604 Hilfe? – mxmissile

Antwort

2

Wie shown here. asp.net core 2.0 hat es geändert, um die ConfigureApplicationCookie Methode zu verwenden. Weitere Informationen zum Migrieren von Identity zu Core 2.0 here.

Verwandte Themen