2013-10-29 5 views
6

Ich versuche, OWIN zu benutzen. Ich habe zwei MVC 5-Projekte erstellt. Eines mit Authentifizierung mit Aspnet.Identity und das andere als leeres Projekt.MVC 5 Weiterleitung zur Anmeldeseite, die nicht mit OWIN funktioniert

Ich habe folgende Unterlagen an das emptyp Projekt:

  • Konto-Controller mit einem Login-Aktion und coresponding Ansicht

  • Startup.cs und andere teilweise Startup.cs mit

public partial class Startup 
{ 
     public void ConfigureAuth(IAppBuilder app) 
     { 
      app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = "ApplicationCookie", 
       LoginPath = new PathString("/Account/Login") 
      }); 
     } 
    } 

Ich habe die About-Aktion im Home-Controller mit dem [Autor Ize] Attribut in beiden Projekten.

Wenn ich das erste Projekt starte und zum Info-Bildschirm gehe, bevor ich mich anmelde, wird es wie erwartet zur Login-Aktion umgeleitet. Wenn ich das selbe für das zweite Projekt mache, bekomme ich einen "HTTP Error 401.0 - Unauthorized" anstatt umzuleiten.

Irgendeine Idee, was die zweite dazu bringen würde, sich so zu verhalten?

+1

Haben Sie die web.config im Vergleich zwischen den beiden Projekten? –

+0

Ich habe die zwei web.config Dateien verglichen, aber ich werde es wieder tun und melden Sie zurück ... – Jeff

+0

@AlexDresko, danke für die Hilfe. Ich habe einige Unterschiede in der web.config gefunden, die ich gestern verpasst habe. Leider hat es nicht geholfen, das Problem zu lösen. – Jeff

Antwort

5

Ich habe zwei neue ähnliche Projekte erstellt und konnte Ihren Fehler reproduzieren.

In dem leeren Projekt musste ich die Microsoft.Owin.Host.SystemWeb (über Nuget) installieren und sobald ich dies getan hatte, bekam ich eine Reihe von Fehlern in meiner Startup.cs-Klasse. Landete mit diesem:

[assembly: OwinStartupAttribute(typeof(v2.Startup))] 
namespace v2 
{ 
    public partial class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      ConfigureAuth(app); 
     } 

     public void ConfigureAuth(IAppBuilder app) 
     { 
      app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = "ApplicationCookie", 
       LoginPath = new PathString("/Account/Login") 
      }); 
     } 
    } 
} 

Am Ende bin ich nun in der Lage schlagen/meine Anmeldung Blick zu sehen, wenn ich die About() Methode mit dem [Authorize]-Attribute versehen nennen.

Hoffe, das hilft! Vince

+2

danke für die Zeit zu verbringen, dies zu versuchen. Ich fing wieder sauber an und konnte schließlich zwei verschiedene Probleme aufspüren. In einem Projekt, das ich anprobierte, hatte ich "AuthenticationMode = AuthenticationMode.Passive" in den CookieAuthenticationOptions. Dies wurde von etwas anderem übrig gelassen, das ich versuchte. In einem anderen Projekt habe ich vergessen, Startup.ConfigureAuth() von Startup.Configuration() aufzurufen! Also im Grunde zwei sorglose Fehler. Ich bin wieder auf dem richtigen Weg und versuche die nächste Ausgabe herauszufinden ... – Jeff

+0

Das Nuget-Update hat es für mich repariert – Scott

+0

Ist das ein Fehler? – Jakov

6

Per ASP.NET MVC 5 Web.config: "FormsAuthenticationModule" or "FormsAuthentication"

<system.webServer> 
    <modules> 
     <remove name="FormsAuthentication" /> 
    </modules> 
</system.webServer> 

für zusätzliche Sicherheit ich sowohl den "Tippfehler" Handler in links (bei Microsoft ändert es mir später geben)

<system.webServer> 
    <modules> 
    <remove name="FormsAuthenticationModule" /> 
    <remove name="FormsAuthentication" /> 
    </modules> 
</system.webServer> 
+0

Was macht diese Codezeile? User

+0

Klicken Sie auf den Link in meiner Antwort, wo es erklärt wird. Meine Antwort war ebenfalls gelöscht worden, also war sie vorher nicht da. –