有没有一种方法可以在没有基于角色的内置方式的情况下限制对页面的访问?
本质上,如果用户尝试访问 admin.aspx,那么它会重定向到login.aspx&redirect_url=admin.aspx
\然后,他们将用他们的凭据回发,我会给他们一个会话 cookie 等等。
有这样的例子吗?
谢谢
编辑:
我不能使用 ASP.NET 的方式,因为我的数据库有员工的用户名和密码。ASP 创建自己的角色等
有没有一种方法可以在没有基于角色的内置方式的情况下限制对页面的访问?
本质上,如果用户尝试访问 admin.aspx,那么它会重定向到login.aspx&redirect_url=admin.aspx
\然后,他们将用他们的凭据回发,我会给他们一个会话 cookie 等等。
有这样的例子吗?
谢谢
编辑:
我不能使用 ASP.NET 的方式,因为我的数据库有员工的用户名和密码。ASP 创建自己的角色等
首先,您应该在登录时设置FormsAuthentication cookie。因此,在您的代码中,成功登录后,您可以使用以下命令设置 cookie:
FormsAuthentication.SetAuthCookie(theUsername, true);
或者更好的是,您可以使用它来处理 cookie 和重定向:
FormsAuthentication.RedirectFromLoginPage(theUsername, true);
(如果你想让 cookie 持久化,则为真)
您可以通过将 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。您可能认为这不那么令人生畏。如果您需要将人员分配到角色(如管理员),那么这是一个好主意。
您可以使用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 建议的方式就是要走的路。创建自定义 MembershipProvider或使用FormsAuthentication 方法。