Может быть, я что-то упускаю, но я прочитал кучу документации и статей по аутентификации и авторизации с использованием .NET Core 2.0, но ничего не нашел по управлению пользователями.
Чего я пытаюсь достичь, так это иметь пользовательский интерфейс администратора, который может создавать пользователей, перечислять всех существующих пользователей и назначать их предопределенным ролям и/или предопределенным политикам.
Я безуспешно пытался сделать это без везения (у меня возникают проблемы при попытке использовать такую модель, как IEnumerable<IdentityUser>
, относительно недопустимого конструктора:
InvalidOperationException: не удалось найти подходящий конструктор для типа «System.Collections.Generic.IEnumerable`1[Microsoft.AspNetCore.Identity.IdentityUser]». Убедитесь, что тип конкретен, а службы зарегистрированы для всех параметров общедоступного конструктора.
и я не могу получить RoleManager
ни в одном контроллере. Он отлично работает с UserManager, но не с RoleManager. я добавил
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
к запуску, поэтому я учил, что DI будет вводиться автоматически...
ApplicationUser
определяется следующим образом:
namespace KaraokeServices.Data
{
public class ApplicationUser : IdentityUser
{
}
}
Я определил UserController, например:
namespace KaraokeServices.Controllers
{
[Route("[controller]/[action]")]
public class UserController : Controller
{
private readonly UserManager<ApplicationUser> userManager;
public UserController(ApplicationDbContext pContext, SignInManager<ApplicationUser> pSignInManager, ILogger<AccountController> logger)
{
userManager = pSignInManager.UserManager;
}
[HttpGet]
public IActionResult Index()
{
List<ApplicationUser> users = new List<ApplicationUser>();
users = userManager.Users.ToList();
return View(users);
}
}
}
А вот и User/Index.cshtml
@page
@model IEnumerable<ApplicationUser>
@{
ViewData["Title"] = "Gestion des utilisateurs";
}
<h2>@ViewData["Title"]</h2>
<form method="post">
<table class="table">
<thead>
<tr>
<th>Courriel</th>
<th>Roles</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
@foreach (var user in Model)
{
<tr>
<td>@user.Email</td>
<td></td>
<td>
<a asp-page="./Edit" asp-route-id="@user.Id">Éditer</a>
<button type="submit" asp-page-handler="delete" asp-route-id="@user.Id">
Effacer
</button>
</td>
</tr>
}
</tbody>
</table>
<a asp-page="./Create">Créer</a>
</form>
но я всегда застрял с ошибкой ...
Что я делаю неправильно?
ApplicationUser
. - person Cake or Death   schedule 17.11.2017AddUserStore()
иAddRoleStore()
см. Проблемы с инъекцией Менеджер ролей - person Cake or Death   schedule 17.11.2017