2013-06-14 15 views
5

Konwertuję istniejącą aplikację ASP.Net do aplikacji MVC/Entity Framework i mam problem z funkcją logowania.MVC - Witryna jest dostępna, jeśli nie jest zalogowany?

Mam swoją stronę logowania, to znaczy, jeśli nie wprowadzą poprawnych informacji, nie przekierowuję na moją stronę początkową. Jednak strona początkowa jest nadal dostępna, jeśli użytkownik wprowadzi adres URL ręcznie.

Jestem całkiem nowy dla MVC i nie stworzyłem strony z wcześniejszym logowaniem. Czy ktokolwiek mógłby mi doradzić, od czego zacząć, aby chronić moją stronę przed anonimowymi użytkownikami?

Odpowiedz

7

ASP.NET MVC ma atrybut o nazwie po prostu Authorize które można ozdobić swój kontroler z:

[Authorize] 
public class YourController { 

} 

To będzie wymagać od użytkownika, aby być uwierzytelnione w celu trafienie żadnych czynności na kontrolerze.

Można również określić to na poziomie działania, jeśli wymagają różnej uwierzytelniania w całej Kontroler:

public class YourController { 
    public ActionResult OpenToTheWorld() { 

    } 

    [Authorize] 
    public ActionResult GottaLogIn() { 

    } 
} 

ostatnia uwaga ... jeśli tak jak ja trzeba pozwolić tylko pewnych grup dostęp do sterowników i działania można zrobić z atrybutem Authorize, a także:

[Authorize(Roles = "Administrators, Editor")] 

ja osobiście lubię sznurki są sztywno tak więc walcowane moje własne atrybutu, który akceptuje salo obiektów R:

[MyAuthorize(Roles = new string[] { SiteRoles.Administrator, SiteRoles.Editor })] 
+1

Dokładna odpowiedź! To był zdecydowanie mój problem. Dziwne, że nie wyszło w wyszukiwarce Google. Niedługo wybierz odpowiedź jako odpowiedź. – Kehlan

2

Czy używany atrybut [Authorize] na Home Page Controller?

Nie zgaduję. W przeciwnym razie użytkownik zostanie automatycznie przekierowany na stronę logowania.

+0

Nie miałem! Wierzę, że to był problem. Sprawię, że zadziała i zgłoś się za chwilę. – Kehlan

Powiązane problemy