繁体   English   中英

asp.net文件夹授权

[英]asp.net folder authorization

我正在使用自己的数据库和表单身份验证。

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

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

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

这是一个示例web.config,如果您将此文件放置在一个文件夹中(在Web项目的结构内),而您只想允许该用户具有“管理员”角色(例如),则此工作即可完成。

<?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/zh-cn/library/system.web.security.formsauthenticationticket.aspx

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM