如何防止用户在未完成任务的情况下直接导航到其他页面

时间:2016-04-27 08:20:05

标签: c# asp.net asp.net-mvc

我正在开发一个新用户分两步注册的网络应用。首先,用户提供电子邮件和密码等基本凭据。然后,要求用户提供一些其他信息,如电话号码,兴趣等。填写所需信息后,用户将被重定向到主页。我正在寻找的是防止用户直接导航到主页而不完成注册过程。使用this回答,我创建了一个 ActionFilter ,如果Referrer Uri中的控制器和操作为空,则会阻止访问Home控制器的Index操作。 这是代码:

public class PreventNavAttribute : FilterAttribute, IActionFilter
    {
        private ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
        public void OnActionExecuting(ActionExecutingContext filterContext)
        {
            string area = string.Empty, controller = string.Empty, action = string.Empty;
            SetUpReferrerRouteVariables(filterContext.HttpContext.Request, ref area, ref controller, ref action);
            logger.Info($"Controller: {controller} Action:{action}");
            if (controller.IsEmpty() || action.IsEmpty())
            {
                filterContext.Result = new HttpNotFoundResult();
            }
        }

使用此方法可以有效防止用户直接导航到Index操作。但是,这里需要注意的是,在下次访问时,用户无法通过在网站上输入网址直接进入主页。

如何解决这个问题,以便我可以阻止新用户直接导航到主页而无需完成注册,并允许用户在下次访问时直接导航到主页。

0 个答案:

没有答案