2013-10-29 10 views
6

Sto cercando di capire come usare OWIN. Ho creato due progetti MVC 5. Uno con autenticazione usando Aspnet.Identity e l'altro iniziato come progetto vuoto.MVC 5 Reindirizza alla pagina di accesso che non funziona con OWIN

ho aggiunto quanto segue al progetto emptyp:

  • regolatore account con un'azione Login e coresponding vista

  • Startup.cs e un altro Startup.cs parziali con

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

Ho decorato l'azione Informazioni sul controller Home con [Autore ize] attributo in entrambi i progetti.

Quando si esegue il primo progetto e si passa alla schermata Informazioni prima di effettuare il login, si reindirizzano all'azione di accesso come previsto. Quando faccio lo stesso per il secondo progetto ottengo un "Errore HTTP 401.0 - Non autorizzato" invece di reindirizzare.

Qualche idea su cosa potrebbe comportare il secondo comportamento in questo modo?

+1

stato confrontato il web.config tra i due progetti? –

+0

Ho confrontato i due file web.config, ma lo farò di nuovo e riferirò ... – Jeff

+0

@AlexDresko, grazie per l'aiuto. Ho trovato alcune differenze nel web.config che mi sono perso ieri. Sfortunatamente non ha aiutato a risolvere il problema. – Jeff

risposta

5

Ho creato due nuovi progetti simili ed è stato in grado di riprodurre il tuo errore.

Nel progetto vuoto, ho dovuto installare il Microsoft.Owin.Host.SystemWeb (tramite Nuget) e, una volta fatto, ho ricevuto un sacco di errori nella mia classe Startup.cs. Finito con questo:

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

Alla fine, sono ora in grado di colpire/vedere mio punto di vista Accesso quando chiamo il metodo A proposito di(), decorato con l'attributo [Authorize].

Spero che questo aiuti! Vince

+2

grazie per aver dedicato del tempo per provare questo. Ho ripreso a pulire e sono finalmente riuscito a rintracciare due problemi diversi. In un progetto su cui stavo provando, avevo "AuthenticationMode = AuthenticationMode.Passive" in CookieAuthenticationOptions. Questo è stato lasciato da qualcos'altro che stavo cercando. In un altro progetto ho dimenticato di chiamare Startup.ConfigureAuth() da Startup.Configuration()! Quindi fondamentalmente due errori incuranti. Sono tornato in pista e sto cercando di capire il prossimo numero .... – Jeff

+0

L'aggiornamento di nuget ha risolto il problema per me – Scott

+0

È un errore allora? – Jakov

6

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

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

per una maggiore sicurezza ho lasciato sia il "errore di battitura" gestore in (nel caso in cui Microsoft cambia in seguito dandomi)

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

cosa farà questa riga di codice User

+0

fare clic sul collegamento nella mia risposta dove viene spiegato. Anche la mia risposta era stata cancellata, quindi non c'era prima. –

Problemi correlati