如何阻止用户登录/注册& MVC3应用程序上的其他非经过身份验证的页面?

时间:2012-03-16 19:46:20

标签: asp.net-mvc asp.net-mvc-3 authentication c#-4.0 login

一旦用户登录我使用表单身份验证的网站,我该如何阻止用户登录&注册页面,如果他已经登录&注册

3 个答案:

答案 0 :(得分:5)

简单的方法是检查控制器方法(登录/注册),如果用户已通过身份验证,并且是否将用户重定向到您想要的页面:

登录页面的内容(与Register相同):

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

     return View();
}

答案 1 :(得分: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 - 如果用户已登录,请简单检查login操作方法。

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

答案 2 :(得分:0)

您可以检查User.Identity.IsAuthenticated属性并适当地重定向它们。