在注册之前阻止用户访问某些页面

时间:2011-01-13 04:56:20

标签: asp.net

我正在开发一个ASP.NET网站。我的座位上有一些页面,我希望他只有在注册用户时才能看到。如果没有,他应该被重定向到适当的页面。我应该在用户登录的Page_load事件上检查这个吗?

如果用户输入了URL的名称,这仍然有效,对吗?

2 个答案:

答案 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方式进行表单身份验证。