重定向到不同的网址,第一次访问任何页面?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了重定向到不同的网址,第一次访问任何页面?相关的知识,希望对你有一定的参考价值。

如果是用户第一次访问网站的任何页面,如何将用户重定向到其他网址?

如果主页只需要这个,我可以在家庭控制器中添加如下代码:

string cookieName = "NotFirstTimeVisit";
if (!HttpContext.Request.Cookies.AllKeys.Contains(cookieName))
{
    // first time, add a cookie.
    HttpCookie cookie = new HttpCookie(cookieName);
    cookie.Value = "True";
    HttpContext.Response.Cookies.Add(cookie);

    var url = ConfigurationManager.AppSettings["FirstTimeVisitUrl"];
    // redirect to the page for first time visit.
    return Redirect(url);
}

但问题是:用户可能无法在第一次访问时浏览主页。例如,用户可以获得共享链接,即https://example.com/shared_001/002,然后它将不被重定向。

有什么建议?

答案

我已经创建了一个演示,用于仅在整个应用程序中第一次将用户重定向到URL。您必须重写OnActionExecuting方法以检查用户是否被重定向或未提前重定向。

1.为覆盖操作筛选器(操作筛选器之前)创建一个类。

namespace Example.Helper
{
    public class ValidateUserLoggedIn : ActionFilterAttribute
    {
        /// <summary>
        /// Method for redirect to url first time only
        /// </summary>
        /// <param name="filterContext"></param>
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            try
            {
                string cookieName = "NotFirstTimeVisit";
                if (!HttpContext.Current.Request.Cookies.AllKeys.Contains(cookieName))
                {
                    // first time, add a cookie.
                    HttpCookie cookie = new HttpCookie(cookieName);
                    cookie.Value = "True";
                    HttpContext.Current.Response.Cookies.Add(cookie);

                    // You can add your URL here
                    filterContext.Result = new RedirectToRouteResult(
                                                                    new RouteValueDictionary
                                                                    (new
                                                                    {
                                                                        controller = "Department",
                                                                        action = "Index"
                                                                    }
                                                                ));
                }
                base.OnActionExecuting(filterContext);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message.ToString());
            }
        }
    }
}

2.根据您的要求,将上述方法调用到控制器,全局文件,每个操作。

namespace Example.Controllers
{
    [ValidateUserLoggedIn] // Action Filter class
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult About()
        {
            ViewBag.Message = "Your application description page.";

            return View();
        }
   }
}

注意:如果您对上述代码有任何疑问,请与我们联系。谢谢!

以上是关于重定向到不同的网址,第一次访问任何页面?的主要内容,如果未能解决你的问题,请参考以下文章

wpml语言重定向到默认值

创建一个处理多个目的地的重定向页面php?

Django:如果在 urls.py 中登录,则重定向到不同的页面

103:重定向详解

django 重定向

从域重定向到其他网址,然后在登录页面上