我想为我的网站实现一个条款和条件页面,要求用户接受条款和条件,并可能将该值存储在 cookie 中,这样我就可以判断他们是否已接受而不是不断提示他们,并非所有用户都有帐户所以我认为饼干是去那里的方式。
只是想最好的方法来实现这一点,如果用户没有,最好使用全局过滤器在站点上的任何操作之前执行并重定向到条款和条件页面(将请求的页面保存在某处)登录,或者有更好的方法吗?
我想为我的网站实现一个条款和条件页面,要求用户接受条款和条件,并可能将该值存储在 cookie 中,这样我就可以判断他们是否已接受而不是不断提示他们,并非所有用户都有帐户所以我认为饼干是去那里的方式。
只是想最好的方法来实现这一点,如果用户没有,最好使用全局过滤器在站点上的任何操作之前执行并重定向到条款和条件页面(将请求的页面保存在某处)登录,或者有更好的方法吗?
在将处理 T&C POST 的操作方法中:
Session["AcceptedTC"] = true;
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class AcceptedTermsCheck : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// Check if AcceptedTC is set to true
// If set, then do nothing
// Otherwise redirect to TC page
}
}
使用属性的原因是您可能有一些页面不需要用户接受条款和条件。如果您要对 Application_BeginRequest 进行检查,那么您将没有这种灵活性。
另一种选择是覆盖 global.asax 文件上的 Application_BeginRequest 方法。
protected void Application_BeginRequest(object sender, EventArgs e)
{
if(ShouldIShowMessage())
{
this.Response.Redirect("RedirectUrl");
}
}
private bool ShouldIShowMessage()
{
// Decision logic here
}
编辑 我只是想,要澄清你的决策逻辑仍然需要说一个 cookie 之类的东西,但它不必用属性装饰控制器或添加全局过滤器。