【问题标题】:how to get role in web api mvc c#?如何在 web api mvc c# 中获得角色?
【发布时间】:2018-08-24 09:41:59
【问题描述】:

我尝试使用 web api 获取所有角色,但没有获得任何角色。 我希望用户明智的所有角色。但我无法在我的查询中扮演任何角色。你能帮我看看有什么问题吗?

这是我的代码:

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

我已尝试编写此代码,但未在我的数据库中获得任何角色我已添加角色并为此“abc.com”用户添加角色。

【问题讨论】:

  • User.IsInRole("RoleName") 呢?
  • 我也在尝试这个 User.IsInRole("Admin") 但得到错误但我的数据库管理员角色可用。
  • 然后在我添加此代码后' ' 在 web.config 中然后得到像这样的错误 'System.Data.SqlClient.SqlException: Invalid object name 'dbo.aspnet_SchemaVersions' .'
  • 您尝试获取角色的用户是否已通过身份验证(已登录)?
  • 是经过身份验证的用户。

标签: c# asp.net-mvc


【解决方案1】:

正如您在上面的评论中提到的,您试图通过简单的 Controller 方法而不是 Api Controller 获取用户角色。所以请检查下面的代码。

假设您的控制器名称是 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("nirav@gmail.com").Roles;
  //then rest code

是的,你需要添加参考

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

就是这样!

【讨论】:

    猜你喜欢
    • 2014-03-11
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 2012-08-12
    相关资源
    最近更新 更多