2017-04-03 36 views
0

我嘗試使用web api獲取所有角色,但沒有得到任何作用。 我想通過用戶明智的所有角色。但是我無法在我的查詢中找到任何角色。你能幫我什麼是問題嗎?如何獲得web api mvc c#中的角色?

這裏這是我的代碼:

var res = System.Web.Security.Roles.GetRolesForUser("abc.com").FirstOrDefault(); 
var r = System.Web.Security.Roles.GetAllRoles().ToList(); 

我有嘗試這個代碼寫,但我以前不得到我的數據庫我已經添加角色並添加了這種「abc.com」用戶角色的任何角色。

+0

'User.IsInRole(「RoleName」)'? –

+0

我也嘗試這個User.IsInRole(「管理員」),但得到錯誤,但我的數據庫管理員角色可用。 – coderwill

+0

然後IM後添加此代碼' <添加名稱= 「AspNetSqlRoleProvider」 類型= 「System.Web.Security.SqlRoleProvider」 的connectionStringName = 「DefaultConnection」 的applicationName =「/」/> '在web.config然後得到這樣的錯誤'System.Data.SqlClient.SqlException:無效的對象名稱'dbo.aspnet_SchemaVersions'。' – coderwill

回答

1

正如你在上面的評論中提到的那樣,你試圖通過一個簡單的控制器方法而不是Api控制器來獲取角色。所以,檢查我的婁代碼,

假設你的控制器名稱爲AdminController,則添加這些婁代碼,

public class AdminController : Controller 
{ 
//rest code 
private ApplicationUserManager _userManager; 

public AdminController() 
{ 
} 

public AdminController(ApplicationUserManager userManager) 
{ 
    UserManager = userManager; 
} 
public ApplicationUserManager UserManager 
{ 
    get 
    { 
     return _userManager ?? 
     HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
     } 
    private set 
     { 
     _userManager = value; 
     } 
    } 
    //then rest code, what ever you have 

    //Add this bellow code inside the Method, where you want to fetch the 
    //roles by username 
    var myRoles = UserManager.FindByName("[email protected]").Roles; 
    //then rest code 

是的,你需要添加引用

using Microsoft.AspNet.Identity; 
using Microsoft.AspNet.Identity.Owin; 

這它!如果有幫助,不要忘記標記爲答案:)