asp.net文件夹授权

时间:2010-02-15 19:12:58

标签: asp.net authorization directory

我正在使用自己的数据库并进行身份验证。

数据库包含一个包含用户的表,第二个包含用户所分配的角色。

问题是:如何在web.config中准备该部分,以便它只允许属于其中一个角色的用户访问该文件夹?

第二个问题: 使用IIS配置我可以阻止直接访问web目录中的所有文件夹。让我们说,其中一个页面将包含允许从这些受保护文件夹下载文件的链接。如果允许用户访问该站点,他还能够下载该内容吗?

2 个答案:

答案 0 :(得分:1)

下面是一个示例web.config,如果您将此文件放在一个文件夹中(在您的Web项目结构中),您只希望允许具有“Admin”角色的用户(例如),这将完成工作。

<?xml version="1.0"?>

<configuration>
    <appSettings/>
    <connectionStrings/>
    <system.web>
       <authorization>
          <allow roles="Admin"/>
          <deny users="*"/>
       </authorization>
    </system.web>
</configuration>

为了将此链接与您的安全性相关联,在成功登录检查后,您需要创建FormsAuthenticationTicket并传递用户名和用户角色等详细信息。

显示这一点的一个简单示例是:

 FormsAuthenticationTicket myTicket = new FormsAuthenticationTicket(1, myUserName, DateTime.Now, DateTime.Now.AddMinutes(30), true, myUserRole, FormsAuthentication.FormsCookiePath);
 string hash = FormsAuthentication.Encrypt(myTicket);
 HttpCookie myCookie = new HttpCookie(FormsAuthentication.FormsCookieName, hash);
 Response.Cookies.Add(myCookie);

这样你就可以在你的代码中执行此操作:

 if (Context.User.IsInRole("Admin")) {
      // Do Something
 } else {
      // Do Something Else
 }

您的Web.config文件将如上所述。

有关FormsAuthenticationTickets http://msdn.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx

的更多信息

答案 1 :(得分:0)

<appSettings/>
<connectionStrings/>
<system.web>
   <authorization>
      <allow roles="Admin"/>
      <deny users="*"/>
   </authorization>
</system.web>