我有一个 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
类。
听起来您可以为此使用会话,或者如果您必须确保访问者完成这些“必需步骤”,则可以使用其他(更持久的)存储,这样您就可以在他们完成时存储它。
使用 aRole
并且仅在用户拥有时才允许访问其他控制器Role
。Role
完成必要步骤后,将用户添加到此。
我创建了一个自定义授权属性,如果它们不符合我设置的标准,它将使用重定向到我的登录页面。然后,这使我可以[AuthorizeAdminArea]
在停止访问所有区域的基本控制器上使用。然后我用来[AllowAnonymous]
允许访问登录区域。