我正在使用我自己的數據庫和表單身份驗證。asp.net文件夾授權
數據庫包含一個帶有用戶的表格,第二個帶有角色的表格分配給用戶。
現在的問題是:如何準備web.config中的部分,因此它只允許屬於某個角色的用戶訪問該文件夾?
第二個問題: 使用IIS配置我可以阻止直接訪問Web目錄中的所有文件夾。比方說,其中一個頁面將包含允許從這些受保護的文件夾下載文件的鏈接。如果用戶被允許訪問該網站,他是否也可以下載該內容?
我正在使用我自己的數據庫和表單身份驗證。asp.net文件夾授權
數據庫包含一個帶有用戶的表格,第二個帶有角色的表格分配給用戶。
現在的問題是:如何準備web.config中的部分,因此它只允許屬於某個角色的用戶訪問該文件夾?
第二個問題: 使用IIS配置我可以阻止直接訪問Web目錄中的所有文件夾。比方說,其中一個頁面將包含允許從這些受保護的文件夾下載文件的鏈接。如果用戶被允許訪問該網站,他是否也可以下載該內容?
這裏是一個示例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
<appSettings/>
<connectionStrings/>
<system.web>
<authorization>
<allow roles="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
我知道。但是存在一個問題,即分配給用戶的角色存儲在我自己的數據庫/表中。有沒有辦法用web.config以某種方式連接該表? – Charly 2010-02-15 19:19:15
答案已修改,以包含更多詳細信息請求 – 2010-02-15 19:26:11
我已使用Cookie身份驗證。但是,糾正我,如果我錯了:元素「」中的web.config使用元素myUserRole中的cookie中存儲的數據? –
Charly
2010-02-15 20:07:31