我正在开发一个ASP.NET网站。我的座位上有一些页面,我希望他只有在注册用户时才能看到。如果没有,他应该被重定向到适当的页面。我应该在用户登录的Page_load事件上检查这个吗?
如果用户输入了URL的名称,这仍然有效,对吗?
答案 0 :(得分:0)
以下是我为一些最简单的网站所做的工作。它使用典型的forms authentication。来自global.ascx.cs:
protected void Application_PostAuthenticateRequest(object sender, EventArgs e)
{
var unsecuredPages = new[]
{
"test.htm",
"email.htm"
};
bool letThrough = unsecuredPages.Any(s => Request.RawUrl.ToLowerInvariant().Contains(s));
if (letThrough)
{
return;
}
if (!User.Identity.IsAuthenticated &&
!Request.RawUrl.Contains(FormsAuthentication.LoginUrl))
{
FormsAuthentication.SignOut();
FormsAuthentication.RedirectToLoginPage();
}
}
您明确指定应对所有用户可见的页面,并将所有其他请求重定向到登录页面。我的web.config看起来像这样:
<authentication mode="Forms">
<forms loginUrl="Login.aspx" protection="All" timeout="480" name="xyz" path="/" requireSSL="false" slidingExpiration="true" defaultUrl="Default.aspx" cookieless="UseDeviceProfile" enableCrossAppRedirects="true"/>
</authentication>
<location path="Styles">
<system.web>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
</location>
答案 1 :(得分:0)
是的,您可以创建一个类,在该类中,您可以检查用户是否已注册,并在注册用户所需的页面上继承该类。
您可以使用上述@HeavyWave方式进行表单身份验证。