我正在开发一个新用户分两步注册的网络应用。首先,用户提供电子邮件和密码等基本凭据。然后,要求用户提供一些其他信息,如电话号码,兴趣等。填写所需信息后,用户将被重定向到主页。我正在寻找的是防止用户直接导航到主页而不完成注册过程。使用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操作。但是,这里需要注意的是,在下次访问时,用户无法通过在网站上输入网址直接进入主页。
如何解决这个问题,以便我可以阻止新用户直接导航到主页而无需完成注册,并允许用户在下次访问时直接导航到主页。