繁体   English   中英

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

[英]ASP.NET MVC application - user authorization/permissions

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

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

我正在尝试完成两件事:

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

  2. 忽略该用户对任何控制器的所有请求,除了对特定控制器的一些特定请求。

做上述事情的正确方法是什么?

谢谢。

我所做的是:

  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. 然后,所有Controller都从此CustomController类派生。

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

我创建了一个自定义授权属性 ,如果他们不符合我设置的条件,则将使用重定向到我的登录页面。 然后,这使我可以在基本控制器上使用[AuthorizeAdminArea] ,该控制器停止了对所有区域的访问。 然后,我使用[AllowAnonymous]允许访问登录区域。

看看SimpleMemshipProvider

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM