2009-02-25 78 views
0

我正在使用ASP.NET 2.0成員和角色提供程序與表單身份驗證的Web應用程序。系統中有各種角色。我需要一個用戶角色,它本質上是一個超級用戶,可以像任何用戶帳戶一樣「登錄」(實際上模擬用戶)。ASP.NET Membership/Roles/FormsAuth - 如何以超級用戶身份登錄?

有誰知道這是可能的使用提供者?有任何想法嗎?

一個方法,我想的是,註銷超級用戶,並與

FormsAuthentication.SetAuthCookie(username, false); 

簽署,並將其作爲目標用戶並添加變量到他們的會話來將它們標記爲超級用戶。我認爲這可行,但我只是想知道是否有一個更直接使用Session對象的更聰明的方法?

回答

0

Asp.net方法不支持這一概念,所以你是對上試圖找到一種替代方法。 您可以執行的操作是將IsSuperUser信息添加到身份驗證票據UserData屬性。

+0

謝謝弗雷迪,我想我會跟這個建議去。將這些信息存儲在身份驗證票證中似乎是最正確的地方。 – 2009-02-26 09:21:45

0

爲什麼你沒有可以做任何事情的超級用戶角色?那麼用戶可以只是該角色的一部分。

如果你真的需要的是管理員冒充別人的能力,我不知道什麼是額外的標誌?如果它標誌着當前登錄的用戶給予他超級權力,那麼通過設置角色就可以實現同樣的功能。但是,如果您需要模仿其他人(例如,這是服務檯,並且您需要看到與最終用戶完全相同的內容) - 我通常會檢查憑據,然後檢查超級用戶是否正在登錄,以及他們想要模仿,並基於這一點只是認證登錄用戶作爲他願意模仿的用戶。

我希望我寫的是有道理的......

+0

帕維爾嗨。感謝您的反饋意見。我可能沒有正確解釋它 - 該網站使用個性化,以便每個用戶的視圖不同,這是通過使用HttpContext.Current.User.I需要這是登錄的用戶,但也知道它是一個超級用戶。 – 2009-02-25 16:00:33

0

這是我會做的。對不起,沒有圖形,在這裏躺在牀上的ipad ...

1)使用基於聲明的架構。它很容易實現,看我的項目。

2)基本上是模擬的用戶都會對索賠主要對象的第二身份,但將有不同的境界(境界可能是錯的字,你用它來創建身份)

3)可以構建字符串模仿用戶的身份並手動構建他們的聲明....他們應該立即寫入令牌。我會看一個通用的聲明Transformer類來做到這一點。

4)您可能需要根據模擬身份的存在來調整網站的行爲方式,但這就是有趣的部分。

工作WIF實現 https://github.com/wcpro/scaffr-generated

相關問題