Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何确保用户接受ASP.NET网站上的条款和条件_Asp.net - Fatal编程技术网

如何确保用户接受ASP.NET网站上的条款和条件

如何确保用户接受ASP.NET网站上的条款和条件,asp.net,Asp.net,我们正在修改现有的ASP.NET应用程序。我们添加了一个带有“接受”按钮的条款和条件页面,该按钮将该选项存储在用户的帐户数据中。我们希望防止用户在未接受条款和条件时访问任何页面 我认为我们希望通过在登录时查找“accepted terms”值并将其存储在会话中来实现这一点。然后我们需要拦截每个请求并检查会话值。(如果不存在,我们将用户重定向到条款和条件页面。) PreRequestHandlerExecute方法是放置此检查的正确位置吗?此方法也会在样式表和图像请求时被调用,因此它似乎不是用于此

我们正在修改现有的ASP.NET应用程序。我们添加了一个带有“接受”按钮的条款和条件页面,该按钮将该选项存储在用户的帐户数据中。我们希望防止用户在未接受条款和条件时访问任何页面

我认为我们希望通过在登录时查找“accepted terms”值并将其存储在会话中来实现这一点。然后我们需要拦截每个请求并检查会话值。(如果不存在,我们将用户重定向到条款和条件页面。)


PreRequestHandlerExecute方法是放置此检查的正确位置吗?此方法也会在样式表和图像请求时被调用,因此它似乎不是用于此目的的。

它是一个通用处理程序,因此它会被调用。只要在处理程序的顶部添加一点逻辑,如果它不是要控制访问权限的页面,则会退出该处理程序。

它是一个通用处理程序,因此会为所有内容调用它。只要在处理程序的顶部添加一点逻辑,如果您不想控制对该页面的访问,则该处理程序将退出。

您可以走一小段路,在登录页面上添加一条免责声明,即通过登录,用户同意(链接)条款和条件。(/link)我工作过的一个地方,法律部对此很满意,我在其他很多地方也看到过。

你可以走捷径,在你的登录页面上写一条免责声明,通过登录,用户同意(link)条款和条件。(/link)我工作过的一个地方,Legal对此很满意,我在其他很多地方都见过它。

PreRequestHandlerExecute是迄今为止我发现的最简单的处理程序。我通常在每次请求之前需要评估会话变量的值时使用它,这与您正在做的类似

protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e) {
  if (Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState) {
    // Business Logic Here
  }
}

PreRequestHandlerExecute是迄今为止我发现的最简单的处理程序。我通常在每次请求之前需要评估会话变量的值时使用它,这与您正在做的类似

protected void Application_PreRequestHandlerExecute(Object sender, EventArgs e) {
  if (Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState) {
    // Business Logic Here
  }
}

您是否正在使用成员资格和角色提供程序?您可以为接受T&C的用户定义角色,并通过web.config或其他方式限制对该角色的访问。这种方法的另一个优点是,如果(当)T&C发生变化,您可以定义额外的角色,并轻松地迫使用户接受新的T&C。

您是否使用成员资格和角色提供程序?您可以为接受T&C的用户定义角色,并通过web.config或其他方式限制对该角色的访问。这种方法的另一个优点是,如果T&C发生变化,您可以定义额外的角色,并轻松地迫使用户接受新的T&C。

我有一个类似的要求,我所做的是将我的验证逻辑放在基类中,并使所有需要此验证的表单继承我的基类


这样,验证只在我想要的表单上运行,对静态内容等的请求没有问题。

我有一个类似的要求,我所做的是将我的验证逻辑放在基类中,并使所有需要此验证的表单继承我的基类


这样,验证只在我想要的表单上运行,对静态内容等的请求没有问题。

真的吗?那是设置访问控制的正确位置?我们发现无法从那里可靠地访问会话,这个问题是:哇。我没有遇到过。很高兴知道,真的吗?那是设置访问控制的正确位置?我们发现无法从那里可靠地访问会话,这个问题是:哇。我没有遇到过。很高兴知道。这是最好的解决方案!现在这是最好的解决方案!这是一个相当直截了当的建议。唯一的问题是,它会产生一个相当丑陋的授权错误,而不是简单地将用户重定向到条款和条件。@Jeremy:为什么?您可以在登录时检查他们是否在角色中,如果不在,则重定向到您的T&C页面。我只能认为这是一个问题,如果用户经常重定向到请求页面后登录,而不是登录页面。即使如此,您的403页面仍可以检查角色并提供有用的错误消息。没错,这通常不会发生。在我们的情况下,我们不能更改403页。这是一个相当直接的建议。唯一的问题是,它会产生一个相当丑陋的授权错误,而不是简单地将用户重定向到条款和条件。@Jeremy:为什么?您可以在登录时检查他们是否在角色中,如果不在,则重定向到您的T&C页面。我只能认为这是一个问题,如果用户经常重定向到请求页面后登录,而不是登录页面。即使如此,您的403页面仍可以检查角色并提供有用的错误消息。没错,这通常不会发生。在我们的情况下,我们不能改变403页。