我正在向ASP.NET MVC應用程序添加授權,並且遇到了路障。我終於能夠連接我們的自定義會員提供商並獲得應用程序的身份驗證。現在,正如所料,如果我將[授權]屬性添加到我的控制器,用戶必須通過身份驗證才能查看頁面。我也成功地測試了[Authorize(Users =「{userName}」)],它也可以將頁面限制爲特定用戶。HttpContext.Current.User.IsInRole(roleName)總是返回false
問題是[Authorize(Roles =「{RoleName}」)]似乎並沒有像我期待的那樣工作。如果我將該屬性添加到控制器,則只要嘗試訪問相應的頁面,我就會重定向到我們的登錄頁面。如果用戶沒有所需的角色,這就是我期望發生的情況,但即使用戶具有該角色也會發生這種情況。我已經在View,Controller和Helper方法中檢查了User.IsInRole(「{roleName}」)和HttpContext.Current.User.IsInRole(「{roleName}」),並且總是返回'False'。
我已驗證我正在使用的用戶具有我想要授權的角色。我還在WebForms應用程序中測試了這些用戶,該應用程序通過相同的角色限制頁面訪問,並且工作正常。我認爲我在某處安裝了某些東西,或者錯過了一些簡單的東西,但是在整個上午搜索後,我沒有發現任何讓我更接近解決方案的東西,所以我希望有人能幫助我。
嘿,你可以編輯你的答案,告訴我們配置是什麼 - 可能在未來幫助其他人。 – sirrocco 2009-08-19 22:44:49
sirrocco - 配置設置特定於我們的實施和環境,因此它們不會對任何人有任何用處。 – Hamman359 2009-08-20 14:48:35
您的評論促使我仔細檢查我的web.config,並且發現roleManager節點已啓用=「false」。我只是想讓人們知道,如果它被禁用,它會返回IsInRole的false,而不是像您期望的那樣返回某種異常。 – 2012-01-06 23:04:35