我创建了新的 Web 应用程序。VS 生成登录、注册和类似页面。在 web.config 中,它放置了身份验证类型“Forms”。我希望所有请求都会被重定向到登录页面。然而,我可以轻松导航到主页和关于页面。
这是为什么?如何使未经身份验证的用户重定向到登录页面?我想知道如果我添加新页面,它们的行为是否与向任何人展示自己的行为相同?
我创建了新的 Web 应用程序。VS 生成登录、注册和类似页面。在 web.config 中,它放置了身份验证类型“Forms”。我希望所有请求都会被重定向到登录页面。然而,我可以轻松导航到主页和关于页面。
这是为什么?如何使未经身份验证的用户重定向到登录页面?我想知道如果我添加新页面,它们的行为是否与向任何人展示自己的行为相同?
您可能需要在您创建的每个页面上检查身份验证
if(!User.Identity.IsAuthenticated)
{
FormsAuthentication.RedirectToLoginPage();
}
有两种方法可以将页面限制为经过身份验证的用户。
一种是编程方式,另一种是使用
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 并在网站上使用该名称登录吗?