2012-02-21 92 views
0

我對此很困惑,沒有任何文本/文檔/ SO問題爲我闡明過這個問題。asp.net用戶權限

我想我的asp.net MVC應用程序能夠爲一個XML文檔保存到文件夾在服務器上。但是,我得到一個異常...

Access to the path 'D:\blah\blah\folder\xml_data.xml' is denied. 

所以我的理解我的申請是根據不具有寫權限的用戶帳戶運行。

我想我以前有這個問題,我的解決辦法是聯繫我的虛擬主機,並要求他們給我的網站的權限。

但是如果我想創建自己的具有相應權限的自定義角色集?這些必須添加到IIS中嗎?我需要創建一個列表,然後把它交給網絡主機嗎?這樣的清單會是什麼樣子?據我瞭解,在web.config中配置角色和權限是不可能的,這是否正確?

有一次我的角色和他們的權限設置如何我設置的應用下運行,還我怎麼programitically更改應用程序在其下運行的角色默認的角色?

ps。我不想使用asp.net會員,我想知道如何自己設置。

回答

1

使用asp.net成員資格。我不在乎你是否喜歡它。用它。這很簡單,很簡單,而且它的安全性很好。如果你自己做,你就會把安全搞砸了,不知道你在做什麼。

人們給會員一個壞的說唱,這是一個很好的工具。大多數人只是對此做出錯誤的假設。

您可以在membership/role API中定義您的角色。這存儲在您的數據庫中。如果沒有用戶應用它們,您就無法擁有角色,因此您需要某種類型的會員制。

編輯:

這裏有兩種用戶。第一個是ASP.NET工作進程在IIS下運行的用戶。這是您的主機必須定義的用戶,並允許訪問各種文件夾以訪問文件。

第二是asp.net的用戶的IIdentity,這是asp.net定義了記錄在網絡用戶的用戶,而這是從輔助進程用戶完全獨立。 IIdentity用戶沒有固有的操作系​​統權限或特權,除了那些分配給工作進程標識的權限或特權。

換句話說,基於IIDentity的用戶在IIS中以相同的工作進程身份運行。

例外的情況是,當你定義在web.config「冒充= TRUE」,這使得工作進程「登錄」,以操作系統爲有問題的用戶。換句話說,工作進程將作爲Web用戶憑證運行。這要求網絡用戶在操作系統中也有證書。

另一個例外是您可以指定特定的OS用戶在web.config中模擬。但是,再次,必須有一個操作系統用戶冒充。此外,模仿是一項非常昂貴的操作,需要大量系統資源。

http://msdn.microsoft.com/en-us/library/aa292118(v=vs.71).aspx

+0

謝謝你的建議,但我問具體知道如何做到這一點沒有asp.net成員。我知道我可以主動設置委託人,身份和角色。我需要知道如何創建我的自定義角色和權限。我是否必須定義它們並要求主機設置它們,還是可以自己設置它們?這是我所感興趣的,謝謝。 – 2012-02-21 01:31:36

+0

@ FunkyFresh84 - Principal,Identity和Roles與進程運行的Windows用戶無關(這是您訪問文件時描述的問題)。您不必讓主機知道任何關於它們的信息,它們在您的代碼和數據庫中完全定義。您的IPrincipal和IIDentity對象控制着一切。如果您的用戶需要訪問文件,那麼您仍然必須讓Web進程作爲Windows授予的身份運行。有一種稱爲模擬的概念,但只適用於用戶在服務器上擁有帳戶的情況。 – 2012-02-21 01:37:21

+0

@ FunkyFresh84 - 如果你不完全理解IPrincipal和IIDentity的工作方式(你的問題使我相信你不知道,或者你會知道問題的答案),我仍然推薦使用Membership API。我建議閱讀這個http://msdn.microsoft.com/en-us/library/ff649100.aspx – 2012-02-21 01:43:59