2013-06-17 4 views
0

Я пытаюсь создать сайт MVC 4 ASP.net. Поскольку я новичок в программировании, я хотел бы знать, каков правильный способ визуализации представления на основе того, зарегистрирован ли пользователь или нет.Каков правильный способ визуализации представления?

Мой код: Я пытаюсь ограничить доступ пользователей к страницам «Индекс», «О нас» и «Контакт». Он будет перемещаться только на эти страницы (виды), если пользователь выполнил вход в систему. Мой вопрос: «Это правильный способ сделать это или это неправильно? Есть ли более безопасный, эффективный и приемлемый способ сделать это?»

Пожалуйста, дайте мне знать, если есть. Спасибо

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     if (User.Identity.IsAuthenticated) 
     { 
      return View(); 
     } 
     return RedirectToRoute(new { controller = "Account", action = "Login" }); 
    } 

    public ActionResult About() 
    { 
     if (User.Identity.IsAuthenticated) 
     { 
      ViewBag.Message = "Your app description page."; 
      return View(); 
     } 
     return RedirectToRoute(new { controller = "Account", action = "Login" }); 

    } 

    public ActionResult Contact() 
    { 
     if (User.Identity.IsAuthenticated) 
     { 
      ViewBag.Message = "Your contact page."; 

      return View(); 

     } 
     return RedirectToRoute(new { controller = "Account", action = "Login" }); 
    } 

ответ

1

Authorize attribute позволяет указать, что авторизация ограничена предопределенными ролями или отдельными пользователями.

  • Это дает вам высокую степень контроля над тем, кому разрешено просматривать любую страницу на сайте.
  • Если неавторизованный пользователь пытается получить доступ к методу, отмеченному атрибутом Authorize, инфраструктура MVC возвращает код состояния 401 HTTP.
  • Если сайт настроен на использование аутентификации форм ASP.NET, код состояния 401 заставляет браузер перенаправлять пользователя на страницу входа в систему.

Вы можете использовать [Authorize] на контроллере, если все методы требуют входа в систему, как показано ниже:

[Authorize] 
public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View();  
    } 

    public ActionResult About() 
    { 
     ViewBag.Message = "Your app description page."; 
     return View(); 
    } 

    public ActionResult Contact() 
    { 
     ViewBag.Message = "Your contact page."; 
     return View(); 
    } 

Вы также можете поместить атрибут некоторых методов при необходимости вместо того, чтобы на самом контроллере. Например, если вы хотите, чтобы пользователю войти в систему для Index() метод только тогда вы могли бы сделать это, как показано ниже:

public class HomeController : Controller 
{ 
    [Authorize] 
    public ActionResult Index() 
    {  
       return View();       
    } 
} 
1

Распространенный способ для этого случая является использование [Авторизоваться] (AuthorizeAttribute) Вы можете добавить его к конкретным действиям или весь контроллер. Он также поддерживает определенные ограничения пользователей и роли.

Вы можете начать с решения по умолчанию MVC от Visual Studio, которое создаст все базовые функции на базе провайдера SimpleMembership.

Вы можете обратиться к проекту NerdDinner для получения полного объяснения: http://nerddinnerbook.s3.amazonaws.com/Part9.htm.

+0

Будет ли это возможно для вас, чтобы дать быть примером и объяснить это немного? – nishantvodoo

+0

@nishan_vodoo обновили ответ с помощью примера/объяснений. – Dima

+0

Спасибо, что нашли время ответить. – nishantvodoo

Смежные вопросы