[英]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.