ASP .Net 中的手动访问控制

本文关键字:访问控制 Net ASP | 更新日期: 2023-09-27 17:56:46

有没有办法在没有内置基于角色的方式的情况下限制对页面的访问?

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

''然后,他们将使用他们的凭据回发,我将给他们一个会话cookie,依此类推。

有没有这方面的例子?

谢谢

编辑:

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

ASP .Net 中的手动访问控制

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

FormsAuthentication.SetAuthCookie(theUsername, true); 

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

FormsAuthentication.RedirectFromLoginPage(theUsername, true);

(如果你想让饼干持久化,则为 true)

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

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

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

要考虑的另一件事是实现自己的角色提供程序。这可能没有你想象的那么令人生畏。如果您需要将人员置于角色(如管理员)中,那么这是一个好主意。

您可以使用

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 站点导航,您可以在其中对用户使用相同的访问规则。

编辑:

如果您想针对您的凭据数据库进行身份验证,那么MikeSmithDev建议的方法就是要走的路。创建自定义成员资格提供程序或使用窗体身份验证方法。