重定向到不同的网址,第一次访问任何页面?
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();
}
}
}
注意:如果您对上述代码有任何疑问,请与我们联系。谢谢!
以上是关于重定向到不同的网址,第一次访问任何页面?的主要内容,如果未能解决你的问题,请参考以下文章