ASP .Net中的手动访问控制

时间:2013-01-31 15:33:03

标签: c# asp.net authentication asp.net-membership forms-authentication

有没有办法可以在没有内置角色的情况下限制对网页的访问?

基本上,如果用户尝试访问admin.aspx,则会重定向到login.aspx&redirect_url=admin.aspx

\然后,他们将使用他们的凭据回发,我会给他们一个会话cookie等等。

有这方面的例子吗?

由于

编辑:

我无法使用ASP.NET的方式,因为我的数据库中有员工使用用户名和密码。 ASP创建自己的角色等

2 个答案:

答案 0 :(得分:1)

首先,您应该在登录时设置FormsAuthentication cookie。因此,在您的代码中,成功登录后,您可以使用以下命令设置cookie:

FormsAuthentication.SetAuthCookie(theUsername, true); 

或者更好的是,您可以使用它来处理cookie和重定向:

FormsAuthentication.RedirectFromLoginPage(theUsername, true);

(如果你想让cookie继续存在,则为true)

您可以通过在该文件夹中放置web.config文件来保护admin文件夹:

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

现在有人点击该管理员文件夹并且他们没有登录,它会自动将它们发送到login.aspx?ReturnUrl=admin.aspx

要考虑的另一件事是实现自己的RoleProvider。你可能会认为这不是那么令人生畏。如果你需要让人们担任角色(比如Admin),那么这是一个好主意。

答案 1 :(得分:0)

您可以使用HttpContext.Session来保留会话变量。

当您将某些内容放入会话时:

HttpContext.Current.Session["IsAuthenticated"] = "true"

Asp.Net将为您创建cookie,因此您无需关心它。 cookie将在会话结束时到期。您可以使用自定义登录方法并存储在用户通过身份验证的会话变量中。然后在受限制的页面上您只需检查会话变量,如:

string isAuthenticated = HttpContext.Current.Session["IsAuthenticated"]

编辑:

如果您想使用Asp.Net授权并根据用户名限制访问权限,那么:

<authorization>
    <allow users="John"/>
    <deny users="*"/>
</authorization>

同时查看Asp.Net site navigation,您可以为用户使用相同的访问规则。

编辑:

如果您要对您的凭据数据库进行身份验证,那么MikeSmithDev建议的方式就是您的选择。 Create custom MembershipProvider或使用FormsAuthentication methods