0

我创建了新的 Web 应用程序。VS 生成登录、注册和类似页面。在 web.config 中,它放置了身份验证类型“Forms”。我希望所有请求都会被重定向到登录页面。然而,我可以轻松导航到主页和关于页面。

这是为什么?如何使未经身份验证的用户重定向到登录页面?我想知道如果我添加新页面,它们的行为是否与向任何人展示自己的行为相同?

4

2 回答 2

2

您可能需要在您创建的每个页面上检查身份验证

if(!User.Identity.IsAuthenticated)
{
   FormsAuthentication.RedirectToLoginPage();
}
于 2012-11-13T11:21:41.767 回答
2

有两种方法可以将页面限制为经过身份验证的用户。

一种是编程方式,另一种是使用
web.config 从这一行的 web.config 开始,您可以限制用户可以看到的内容和内容,这是控制以下内容的行:

<authorization>
  <allow users="?" />
</authorization>

详细信息在这里:http: //msdn.microsoft.com/en-us/library/wce3kxhd (VS.100).aspx

通过将包含此内容的 web.config 放在目录中,您可以阻止任何人看到任何内容。

<?xml version="1.0"?>
<configuration>
    <system.web>
      <authorization>
        <deny users="*" />
      </authorization>
    </system.web>
</configuration>

然后你添加额外的权限让他们中的一些人看到。

另一种方法是在每个需要身份验证的页面中以编程方式进行,并添加一个代码来检查这是否正确HttpContext.Current.User.Identity.IsAuthenticated

还有 global.asax,您可以protected void Application_AuthenticateRequest(Object sender, EventArgs e)对每个页面调用的函数进行广泛检查。

请注意,如果您已requireSSL=true在表单上设置,则Identity.IsAuthenticated仅在受保护的 ssl 页面上返回正确结果,在所有其他页面上返回 false。

还有一个相对的问题:一些黑客可以从用户那里窃取 cookie 并在网站上使用该名称登录吗?

于 2012-11-13T11:26:31.373 回答