2011-10-01 10 views
6

Pracuję nad aplikacją Asp.Net MVC 3. Stworzyłem obszar administracyjny dla witryny i zastosowałem atrybut [Authorized] do actionmethods po zalogowaniu. Gdy próbuję uzyskać dostęp do tych adresów bezpośrednio, bez logowania, np. Admin/home lub admin/productlist, przekierowuję mnie do/Home/Login z błędem uwierzytelnienia. Chcę przekierować do administratora/logowania.Autoryzuj adres URL logowania w asp.net MVC 3

Proszę sugerować. Dzięki

+0

pan spojrzał na tej odpowiedzi: http://stackoverflow.com/questions/6447728/formsauthentication-loginurl/6452419#6452419 – frennky

Odpowiedz

7

URL logowania dla aplikacji ASP.NET (w tym MVC3) jest kontrolowana w web.config, w sekcji uwierzytelniania formularzy:

<configuration> 
    <system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Home/Login" timeout="2880" /> 
    </authentication> 
    </system.web> 
</configuration> 

Sztuką dla Ciebie jest to, że chcesz dwa różne logowanie Adresy URL. ASP.NET ma świetną funkcję, w której możesz mieć plik web.config w każdym katalogu projektu, i jeśli to konieczne, użyje najbardziej specyficznego ustawienia, jakie może znaleźć, aż do głównego pliku web.config. Tak więc w folderze, w którym masz widok administracyjny ("Zgaduję"), powinieneś móc utworzyć drugi plik web.config, który będzie stosowany tylko do tych stron i niżej w drzewie:

<configuration> 
    <system.web> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Admin/Login" timeout="2880" /> 
    </authentication> 
    </system.web> 
</configuration> 
+0

Czy to naprawdę działa? http://stackoverflow.com/a/749257/205859 –

0

Możesz zastąpić filtr akcji Autoryzuj, aby rozwiązać te problemy. Na przykład możesz sprawdzić nie tylko role, ale także określone uprawnienia i przekierować do różnych adresów URL. A także za pomocą tego podejścia można wziąć pod uwagę konfigurację routingu.
Spójrz na to odpowiedź: asp.net mvc Adding to the AUTHORIZE attribute

+0

Wygląda na to, że unika się metody KISS. Porzucając proponowane rozwiązanie w pliku internetowym, szybko i czysto dba o problem z routingiem. – Skindeep2366

8

Jeśli to Zdjęcie MVC 3 Upoważnienie potem ja, jak i wielu innych, mieli problemy z błędnym adresem URL jest ustawiony na „Logon” Działanie ... Dla niektórych autor autoryzacji próbuje wysłać użytkownika do Konta \ Login i patrząc na widoki konta mówi, że faktycznie nie ma widoku "Login" nazywa się "LogOn", więc musisz to naprawić w pliku Web.config, wykonując następujące czynności:

   <add key="loginUrl" value="~/Account/LogOn" /> 
+1

Tak, tak, tak !! – contactmatt