2015-03-03 8 views
5

Mam jedną witrynę, na której chcę przekierować użytkowników na stronę "Logowanie", jeśli nie są zalogowani. Użytkownicy mogą próbować uzyskać dostęp do stron internetowych, publikując URL. Chcę to zrobić w C# MVC 4.5W jaki sposób mogę przekierować użytkowników, którzy zalogowali się na stronę logowania, w C# MVC 4.5, jeśli próbują uzyskać dostęp do innych stron witryny za pośrednictwem adresu URL

Tutaj nie chcę, aby akcja "[Autoryzuj]" była dostępna, chyba że się zalogujesz. Jest to czynność indeksująca do wyświetlenia strony indeksu.

//Login Controller 
    [AllowAnonymous] 
    public ActionResult Index() 
    { 
     return View(); 
    } 
    [HttpPost] 
    public ActionResult Index(FormCollection frm) 
    { 
     ....//other code 
    } 

[Authorize] 
public ActionResult Index() 
    { 
     List<DTO> obj = objConfigurator.GetDataList(); 
     return View(obj); 
    } 


    public ActionResult Edit(int Id) 
    { 
     DTO obj = objC.GetListById(Id); 
     return View(obj); 
    } 

Odpowiedz

10

Użyj atrybutu [Authorize] na kontrolerze.

[Authorize] 
public class YourController: Controller 
{ 
. . . 
    [AllowAnonymous] 
    public ActionResult Register() 
    { 
    } 

    [AllowAnonymous] 
    public ActionResult LogIn() 
    { 
    } 
. . . 
} 

Ponadto trzeba dodać stronę logowania w pliku web.config -

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

masz inny, nawet lepszym rozwiązaniem, aby zarejestrować AuthorizeAttribute jako globalny filtr w pliku global.asax.

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 

{ 
    .... 
    filters.Add(new System.Web.Mvc.AuthorizeAttribute()); 
} 

ten sposób, trzeba tylko zastosować [AllowAnonymous] działań tha chcesz być odwiedzane przez anonimowych użytkowników.

+0

Próbowałem tego użyć, ale nie mogę uzyskać dostępu do żadnej strony mojej witryny. – Pranav

+0

udostępnij kod dowolnej wypróbowanej wersji – Nikitesh

+0

Zobacz moją zmienioną odpowiedź. – vortex

Powiązane problemy