2012-03-16 2 views
6

Как только пользователь войдет в систему на моем сайте, где я использую Authentication, тогда как я могу остановить пользователя для входа в систему. & Зарегистрируйте страницу, если он уже имеет регистрационный номер &.Как остановить пользователя для входа в систему/регистрации и других не аутентифицированных страниц в приложении MVC3?

ответ

5

Два пути "с верхней части моей головы":

1 - Пользовательские Action Filter, который перенаправляет пользователя на странице, если они вошли в

public class RedirectAuthenticatedRequests : ActionFilterAttribute 
{ 
    public override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     if(filterContext.HttpContext.Request.IsAuthenticated) { 
      filterContext.Result = new RedirectToRouteResult(
       new RouteValueDictionary(new { 
         controller = "SomeController", 
         action = "SomeAction" 
       } 
      )); 
     } 

     base.OnActionExecuting(filterContext); 
    } 
} 

2 - Simple. проверьте в действии метод login, если пользователь зарегистрирован.

if(Request.IsAuthenticated) return RedirectToAction("SomeOtherView"); 
+0

Я бы создайте атрибут [AuthorizeAttribute], полученный по умолчанию. – Rhapsody

+0

@ Rhapsody вы можете объяснить, каковы шаги для этого атрибута? – updev

+0

@ Xander вы имеете в виду ActionFilter на Global.aspx? – updev

5

легкий путь проверяет в методе контроллера (Логин/регистр), если проверка подлинности пользователя, и если это перенаправление пользователя на страницу, которую вы хотите:

Что-то вроде этого на странице входа (то же самое с Регистром):

// 
// GET: /Login/Index 
public ActionResult Index() 
{ 
    if(User.Identity.IsAuthenticated){ 
      //redirect to some other page 
      return RedirectToRoute("Home", "Index"); 
    } 

    return View(); 
} 
0

Вы можете проверить свойство User.Identity.IsAuthenticated и перенаправлять их соответствующим образом.

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