Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.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
C# ASP.NET MVC应用程序-用户授权/权限_C#_Asp.net Mvc_Asp.net Mvc 3_Security_Web Applications - Fatal编程技术网

C# ASP.NET MVC应用程序-用户授权/权限

C# ASP.NET MVC应用程序-用户授权/权限,c#,asp.net-mvc,asp.net-mvc-3,security,web-applications,C#,Asp.net Mvc,Asp.net Mvc 3,Security,Web Applications,我有一个ASP.NET MVC web应用程序 我的应用程序中有一个欢迎页面,我希望用户在允许他使用应用程序之前完成该页面上的一些步骤 我正在努力完成两件事: 确保用户始终重定向到该页面,直到完成所需步骤。注意:用户在欢迎页面时登录 忽略该用户向任何控制器发出的所有请求,但向特定控制器发出的一些特定请求除外 执行上述操作的正确方法是什么 谢谢。听起来您可以使用该会话进行存储,或者如果您必须确保访问者完成这些“必需步骤”,则可以使用其他(更持久的)存储,这样您就可以在他们完成这些步骤后进行存储。我

我有一个ASP.NET MVC web应用程序

我的应用程序中有一个欢迎页面,我希望用户在允许他使用应用程序之前完成该页面上的一些步骤

我正在努力完成两件事:

  • 确保用户始终重定向到该页面,直到完成所需步骤。注意:用户在欢迎页面时登录

  • 忽略该用户向任何控制器发出的所有请求,但向特定控制器发出的一些特定请求除外

  • 执行上述操作的正确方法是什么


    谢谢。

    听起来您可以使用该会话进行存储,或者如果您必须确保访问者完成这些“必需步骤”,则可以使用其他(更持久的)存储,这样您就可以在他们完成这些步骤后进行存储。

    我所做的是:

  • 创建一个从Controller派生的类,并在未登录时添加要重定向的逻辑:

    public class CustomController : Controller
    {
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
    
            if (!LoggedIn) //Here you decide how to check if the user is Logged in
            {
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new
                {
                    controller = "YourLogInControllerName",
                    action = "YourLoginActionName"
                }));
            }
            else
            {
                base.OnActionExecuting(filterContext);
            }
        }
    }
    
  • 然后所有控制器都从这个
    CustomController
    类派生

  • 我创建了一个脚本,如果它们不符合我设置的标准,它会将使用重定向到我的登录页面。这就允许我在我的基本控制器上使用
    [AuthorizeAdminArea]
    ,该控制器停止了对所有区域的访问。然后我使用
    [AllowAnonymous]
    允许访问登录区域


    查看

    使用
    角色
    ,仅当用户具有该
    角色时才允许访问其他控制器。完成必要步骤后,将用户添加到此
    角色


    请看

    我想这就是我想为我的项目做的,但是有几个问题。filterContext中包含什么?如果我只想验证控制器中的某些操作,该怎么办?(可能关于和联系我们不需要授权吗?)。string originAction=filterContext.RouteData.Values[“action”].ToString();我可以给你行动,让你检查一下。