isAdmin Boolean publik di Asp.Net Mvc 6

public Boolean isAdminUser()    
{    
    if (User.Identity.IsAuthenticated)    
    {    
        var user = User.Identity;    
        ApplicationDbContext context = new ApplicationDbContext();    
        var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));    
        var s = UserManager.GetRoles(user.GetUserId());    
        if (s[0].ToString() == "Admin")    
        {    
            return true;    
        }    
        else    
        {    
            return false;    
        }    
    }    
    return false;    
}    

Masalah saya di Asp.Net Mvc 6, GetRoles dan GetUserId tidak ada, di MVC 5 ada dua di antaranya, karena versi perakitan: Microsoft.AspNet.Identity.Core. Dapatkah seseorang membantu saya untuk memperbaiki masalah ini?

Seperti disebutkan kode di atas, saya menjalankan yang saya temui sebagai berikut:

Kode Keparahan Deskripsi Kesalahan Status Penindasan Jalur File Proyek CS7036 Tidak ada argumen yang diberikan yang sesuai dengan parameter formal yang diperlukan 'optionsAccessor' dari 'UserManager.UserManager(IUserStore, IOptions, IPasswordHasher, IEnumerable>, IEnumerable>, ILookupNormalizer, IdentityErrorDescriber, IServiceProvider, ILogger >, IHttpContextAccessor)' LMS.DNX 4.5.1 D:\Projects\Library\LMS\src\LMS\Controllers\RoleController.cs 50 Aktif

// UsersController [Otorisasi] kelas publik UsersController : Controller { private readonly UserManager _userManager; ApplicationDbContext _context pribadi; publik UsersController( UserManager userManager ) { _userManager = userManager; _context = AplikasiDbContext baru();

    }
    // GET: /Role/Users
    public async Task<IActionResult> IsAdminUser(RegisterViewModel model, string returnUrl = null)
    {
        ViewData["ReturnUrl"] = returnUrl;
        if (ModelState.IsValid)
        {
            if (User.Identity.IsAuthenticated)
            {
                var userId = User.GetUserId();
                ApplicationUser user = await _userManager.FindByIdAsync(userId);
                if (!IsAdminUser())
                {
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    return RedirectToAction("Index", "Home");
                }
            }
            return RedirectToAction("Index", "Home");
        }
        return View(model);
    }

    private bool IsAdminUser()
    {
        if (User.Identity.IsAuthenticated)
        {
            var userId = User.GetUserId();
            var user = _userManager.FindByIdAsync(userId);
            if (user.ToString() == "Admin")
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        return false;
    }

    // GET: /<controller>/
    // method is async and returns a Task
    public async Task<IActionResult> Index()
    {
        if (User.Identity.IsAuthenticated)
        {
            var user = User.Identity;
            ViewBag.Name = user.Name;
            //  ApplicationDbContext context = new ApplicationDbContext();
            //  var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));

            //var s=    UserManager.GetRoles(user.GetUserId());
            ViewBag.displayMenu = "No";

            if (IsAdminUser())
            {
                ViewBag.displayMenu = "Yes";
            }
            return View();
        }
        else
        {
            ViewBag.Name = "Not Logged IN";
        }


        return View();
    }
}

// Pengendali Peran

[Otorisasi] RoleController kelas publik : Controller { private readonly UserManager _userManager; ApplicationDbContext _context pribadi; RoleController publik( UserManager userManager ) { _userManager = userManager; _context = AplikasiDbContext baru();

    }

    // GET: /<controller>/
    public async Task<IActionResult> Index()
    {
        if (User.Identity.IsAuthenticated)
        {


            if (!IsAdminUser())
            {
                return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            return RedirectToAction("Index", "Home");
        }

        var Roles = _context.Roles.ToList();
        return View(Roles);
    }

    // GET: /Role/Users
    public async Task<IActionResult> IsAdminUser(RegisterViewModel model, string returnUrl = null)
    {
        ViewData["ReturnUrl"] = returnUrl;
        if (ModelState.IsValid)
        {
            if (User.Identity.IsAuthenticated)
            {
                var userId = User.GetUserId();
                ApplicationUser user = await _userManager.FindByIdAsync(userId);
                if (!IsAdminUser())
                {
                    return RedirectToAction("Index", "Home");
                }
                else
                {
                    return RedirectToAction("Index", "Home");
                }
            }
            return RedirectToAction("Index", "Home");
        }
        return View(model);
    }

    private bool IsAdminUser()
    {
        if (User.Identity.IsAuthenticated)
        {
            var userId = User.GetUserId();
            var user = _userManager.FindByIdAsync(userId);
            if (user.ToString() == "Admin")
            {
                return true;
            }
            else
            {
                return false;
            }
        }
        return false;
    }

    public IActionResult Create()
    {
        if (User.Identity.IsAuthenticated)
        {


            if (!IsAdminUser())
            {
                return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            return RedirectToAction("Index", "Home");
        }

        var Role = new IdentityRole();
        return View(Role);
    }
    [HttpPost]
    public IActionResult Create(IdentityRole role)
    {
        if (User.Identity.IsAuthenticated)
        {
            if (!IsAdminUser())
            {
                return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            return RedirectToAction("Index", "Home");
        }

        _context.Roles.Add(role);
        _context.SaveChanges();
        return RedirectToAction("Index");
    }
}

Saya memperbaiki IsAdminUser dengan metode baru, kode tidak ada kesalahan, saya masih belum mendapatkan hasil yang baik, jika ada yang tahu cara memperbaikinya. Catatan dengan ucapan terima kasih.


person Sisovin    schedule 17.03.2016    source sumber
comment
Apakah ini membantu? stackoverflow.com/a/30701830/1663001   -  person DavidG    schedule 17.03.2016
comment
tingkatkan versi identitas asp Anda   -  person DarkMakukudo    schedule 17.03.2016
comment
Saya pikir UserManager memiliki UserManager.GetRolesAsync()   -  person Kien Chu    schedule 17.03.2016
comment
Saya telah mencoba UserManager.GetRolesAsync(user.Name, Admin), tetapi tidak berhasil. Kode ini ada di UserController.cs.   -  person Sisovin    schedule 17.03.2016


Jawaban (1)


Anda dapat memeriksa apakah pengguna berperan dengan kode berikut.

if(User.IsInRole("Admin"))
{
    return true;
}
else
{
    return false;
}
person Manja    schedule 18.03.2016