2017-09-21 53 views
0

更新:嘗試與角色,同樣的問題。我在Manage/Index /打印我的角色:它顯示我是超級用戶和授權用戶,但我看不到隱藏在@if (User.IsInRole("SuperUser")){ <html> }中的剃刀頁的部分,也不能訪問受保護的控制器操作與[Authorize(Roles = "AuthorizedUser")]Asp.Net MVC - 授權不會接受我的用戶


試圖保護使用內置的框架我Asp.Net MVC的部分。我現在正在使用標準.NET Framework多用戶身份驗證模板。

我希望用戶能夠運行SettingsController中除管理員以外的大部分內容。

[Authorize(Users = @"[email protected]")] 

註冊了一個賬號與電子郵件,複製什麼@ User.Identity.Name在導航欄返回並粘貼入授權屬性,如上圖所示。

但是,當我登錄並嘗試訪問控制器時,我被重定向到登錄字段,就像我根本沒有登錄過一樣。我在字符串前面使用和不使用@來嘗試它,我只用電子郵件的「管理員」部分來嘗試它...我需要將它放入該字符串中才能使用它。在線示例通常只包含如下簡單名稱:

[Authorize(Users="Alice,Bob")] 
public class RestrictedContentController : Controller 
{ 
    . . . 
} 

但標準模板沒有用戶名。 User.Identity.Name返回電子郵件地址...我該怎麼辦?

+0

這一個可能對你有用[授權](https://stackoverflow.com/questions/25548545/custom-user-authorization-based-with-roles-in-asp-net-mvc) –

+0

對我而言似乎你確實沒有登錄。我確定問題不在於[Authorize]屬性。你能顯示你用來登錄用戶的代碼嗎?還有你如何配置身份驗證(cookie)。 –

回答

0

一個用戶:

我沒有定義的RoleManager。我只是手動實例化一個角色並將其添加到映射表中。不知道爲什麼它不起作用,但是一旦我定義了一個角色管理器,通過Owin Context加載它,在角色管理器中創建角色,然後在用戶管理器中添加它,我就可以訪問[授權]控制器功能。

-1

你有用戶的智慧用戶名稱愛麗絲和鮑勃?

嘗試在發現問題時

+0

我剛剛從MSDN複製了這個例子,以顯示他們是如何做到的。這部分不在我的代碼中。我確實有[email protected]用戶。 – Vaethin

+0

是否有用戶名? –

+0

你能登錄? 你有沒有檢查你的數據庫,以確保有這些角色和用戶?並且您的用戶被分配到這些角色。將一個控制器分配給只允許某些用戶的想法是一個糟糕的主意。它對於長期使用和可擴展性無效。 –