Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net中的手动访问控制_C#_Asp.net_Authentication_Asp.net Membership_Forms Authentication - Fatal编程技术网

C# ASP.Net中的手动访问控制

C# ASP.Net中的手动访问控制,c#,asp.net,authentication,asp.net-membership,forms-authentication,C#,Asp.net,Authentication,Asp.net Membership,Forms Authentication,有没有一种方法可以在没有内置的基于角色的方式的情况下限制对页面的访问 基本上,如果用户试图访问admin.aspx,它会重定向到login.aspx&redirect\u url=admin.aspx \然后,他们会发回他们的凭证,我会给他们一个会话cookie等等 有这样的例子吗 谢谢 编辑: 我无法使用ASP.NET的方式,因为我的数据库中有具有用户名和密码的员工。ASP使用角色创建自己的会话,您可以使用HttpContext.Session保存会话变量 当您将某些内容放入会话时,例如: H

有没有一种方法可以在没有内置的基于角色的方式的情况下限制对页面的访问

基本上,如果用户试图访问admin.aspx,它会重定向到
login.aspx&redirect\u url=admin.aspx

\然后,他们会发回他们的凭证,我会给他们一个会话cookie等等

有这样的例子吗

谢谢

编辑:


我无法使用ASP.NET的方式,因为我的数据库中有具有用户名和密码的员工。ASP使用角色创建自己的会话,您可以使用
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>
以及可以为用户使用相同访问规则的位置

编辑:

如果您想根据您的凭据数据库进行身份验证,那么MikeSmithDev建议的方法是可行的。或者使用。首先,您应该在登录时设置cookie。因此,在您的代码中,成功登录后,您可以使用以下设置cookie:

FormsAuthentication.SetAuthCookie(theUsername, true); 
或者更好的是,您可以使用它来处理cookie和重定向:

FormsAuthentication.RedirectFromLoginPage(theUsername, true);
(如果希望cookie持久化,则为true)

您可以通过将web.config文件放入管理员文件夹来保护该文件夹:

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


. 这比你想象的要简单得多。如果您需要将人员设置为角色(如管理员),那么这是一个好主意。

如果没有内置的基于角色的方式,这意味着什么?表单身份验证不支持?我无法使用ASP.NET的方式,因为我的数据库中有具有用户名和密码的员工。ASP创建自己的角色等。您也可以通过用户名使用授权;这不仅仅是角色。所以任何登录的人都可以进入管理页面?没有自定义角色等?没有,但用户不是管理员就是管理员,但管理员取决于他们所在的组。但我想如果我想要“让我登录”功能,我需要cookies,对吗?