【问题标题】:ASP.NET MVC application - user authorization/permissionsASP.NET MVC 应用程序 - 用户授权/权限
【发布时间】:2013-10-07 06:06:09
【问题描述】:

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

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

我正在尝试完成两件事:

  1. 确保用户在完成所需步骤之前始终被重定向到该页面。注意:用户在欢迎页面时已登录。

  2. 忽略该用户向任何控制器发出的所有请求,对特定控制器的少数特定请求除外。

上述操作的正确方法是什么?

谢谢。

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-3 security web-applications


    【解决方案1】:

    使用Role 并且仅在用户拥有此Role 时才允许访问其他控制器。完成必要步骤后,将用户添加到此Role

    http://msdn.microsoft.com/en-us/library/9ab2fxh0.aspx

    【讨论】:

      【解决方案2】:

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

      看看SimpleMemshipProvider

      【讨论】:

        【解决方案3】:

        我所做的是:

        1. 创建一个派生自 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);
                  }
              }
          }
          
        2. 那么所有的Controllers都派生自这个CustomController类。

        【讨论】:

        • 我认为这是我想为我的项目做的,但有几个问题。 filterContext 中会包含什么?如果我只想对控制器中的某些操作进行身份验证怎么办? (也许 about 和 Contact Us 不需要授权?)我在哪里可以获得有关此模式的更多信息?
        • filterContex 由应用程序自动填充。字符串 originAction = filterContext.RouteData.Values["action"].ToString();可以给你行动,所以你可以检查。
        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-10-31
          • 1970-01-01
          • 1970-01-01
          • 2023-03-13
          • 1970-01-01
          • 2012-04-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多