Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何阻止用户登录/注册&;MVC3应用程序上的其他未经验证的页面?_Asp.net Mvc_Asp.net Mvc 3_Authentication_C# 4.0_Login - Fatal编程技术网

Asp.net mvc 如何阻止用户登录/注册&;MVC3应用程序上的其他未经验证的页面?

Asp.net mvc 如何阻止用户登录/注册&;MVC3应用程序上的其他未经验证的页面?,asp.net-mvc,asp.net-mvc-3,authentication,c#-4.0,login,Asp.net Mvc,Asp.net Mvc 3,Authentication,C# 4.0,Login,一旦用户登录到我使用表单身份验证的网站,那么如果用户已准备好登录和注册,我如何阻止用户进入登录和注册页面。简单的解决方法是检查控制器方法(登录/注册),如果用户已通过身份验证,并且已将用户重定向到您想要的页面: 类似于登录页面的内容(与Register相同): 您可以检查User.Identity.IsAuthenticated属性并适当地重定向它们。有两种方法可以“从我的头上跳下来”: 1-自定义操作过滤器,用于在用户登录时从页面重定向用户 public class RedirectAuthe

一旦用户登录到我使用表单身份验证的网站,那么如果用户已准备好登录和注册,我如何阻止用户进入登录和注册页面。

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

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


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

有两种方法可以“从我的头上跳下来”:

1-自定义
操作过滤器
,用于在用户登录时从页面重定向用户

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);
    }
}
if(Request.IsAuthenticated) return RedirectToAction("SomeOtherView");
2-如果用户已登录,只需在
login
操作方法中进行简单检查

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);
    }
}
if(Request.IsAuthenticated) return RedirectToAction("SomeOtherView");

我确实会创建一个[AuthorizeAttribute]派生属性。@Rhapsody你能解释一下获得该属性的步骤吗?@Xander你是说Global.aspx上的ActionFilter吗?@updev否,我的意思是创建一个
ActionFilterAttribute
来装饰您的
登录
ActionMethod
。@updev创建一个不同的属性,如果请求id经过身份验证,它只会重定向。。。