2013-10-29 15 views
6

Próbuję się obrócić używając OWIN. Stworzyłem dwa projekty MVC 5. Jedna z uwierzytelnianiem przy użyciu Aspnet.Identity i druga zaczęła jako pusty projekt.MVC 5 Przekierowanie na stronę logowania nie działa z OWINEM

dodałem następujące projektowi emptyp:

  • kontroler konto w akcji logowania i coresponding widzenia

  • Startup.cs a kolejne częściowe Startup.cs z

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

Udekorowałem akcję About w kontrolerze głównym za pomocą [Autor ize] atrybut w obu projektach.

Po uruchomieniu pierwszego projektu i przejściu do ekranu Informacje przed zalogowaniem przekierowuje do akcji logowania zgodnie z oczekiwaniami. Kiedy zrobię to samo dla drugiego projektu, otrzymam komunikat "Błąd HTTP 401.0 - Nieautoryzowany" zamiast przekierowania.

Każdy pomysł, co spowodowałoby, że drugi zachowywał się w ten sposób?

+1

Czy porównano web.config między dwoma projektami? –

+0

Porównałem dwa pliki web.config, ale zrobię to jeszcze raz i zgłoś ... – Jeff

+0

@AlexDresko, dziękuję za pomoc. Znalazłem pewne różnice w web.config, które przeoczyłem wczoraj. Niestety nie pomogło to rozwiązać problemu. – Jeff

Odpowiedz

5

Stworzyłem dwa nowe podobne projekty i mogłem odtworzyć Twój błąd.

W pustym projekcie musiałem zainstalować Microsoft.Owin.Host.SystemWeb (przez Nuget) i kiedy to zrobiłem, otrzymywałem masę błędów w mojej klasie Startup.cs. Zakończyła się w ten sposób:

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

W końcu, jestem teraz w stanie ukryć/widząc mój login widok kiedy wywołać metodę O() przyozdobionych atrybutu [Authorize].

Mam nadzieję, że to pomoże! Vince

+2

dzięki za spędzenie czasu na wypróbowanie tego. Znowu zacząłem sprzątać i nareszcie udało mi się wyśledzić dwa różne problemy. W jednym projekcie, który próbowałem to, miałem "AuthenticationMode = AuthenticationMode.Passive" w CookieAuthenticationOptions. To zostało z czegoś, co próbowałem. W innym projekcie zapomniałem zadzwonić do Startup.ConfigureAuth() z Startup.Configuration()! Więc w zasadzie dwa nieostrożne błędy. Jestem na dobrej drodze i próbuję znaleźć następny numer ... – Jeff

+0

Aktualizacja nuget naprawiła to dla mnie – Scott

+0

Czy to jest błąd? – Jakov

6

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

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

dla dodatkowego bezpieczeństwa zostawiłem zarówno "literówkę" w obsługi (w przypadku Microsoft zmienia to później daje mi)

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

co zrobi ten wiersz kodu User

+0

kliknij link w mojej odpowiedzi, gdzie jest wyjaśniony. Moja odpowiedź również została usunięta, więc wcześniej jej nie było. –

Powiązane problemy