В настоящее время я создаю RESTful Web API, чтобы пользователь мог быть удален из роли в приложении.
Это UsersController
(API):
public class UsersController : ApiController
{
private ApplicationDbContext _identity;
private readonly UserManager<ApplicationUser> _userManager;
public UsersController()
{
_identity = new ApplicationDbContext();
var store = new UserStore<ApplicationUser>(_identity);
_userManager = new UserManager<ApplicationUser>(store);
}
// --- REMOVE USER FROM ROLE HERE ---
[HttpDelete]
[Route("api/users/{userId}/roles/{roleName}")]
public async void RemoveFromRole(string userId, string roleName)
{
var userInDb = _identity.Users.SingleOrDefault(u => u.Id == userId);
if (userInDb == null)
throw new HttpResponseException(HttpStatusCode.NotFound);
var roleInDb = _identity.Roles.SingleOrDefault(r => r.Name == roleName);
if (roleInDb == null)
throw new HttpResponseException(HttpStatusCode.NotFound);
await _userManager.RemoveFromRoleAsync(userInDb.Id, roleInDb.Id);
}
Я вызываю метод RemoveFromRole
, используя этот AJAX-запрос в представлении:
$("#roles").on("click", ".js-delete", function() {
var button = $(this);
bootbox.confirm("Are you sure you want to remove the user from this role?",
function(result) {
if (result) {
$.ajax({
url: "/api/users/" +
button.attr("data-user-id") +
"/roles/" +
button.attr("data-role-name"),
method: "DELETE",
success: function() {
location.reload();
toastr.success("Role removed");
},
error: function() {
toastr.error("Unable to remove user from role");
}
});
}
});
});
Однако при выполнении этого RemoveFromRoleAsync
не удается (result.Succeeded = false), и поэтому пользовательне удален из роли.
Я новичок в использовании ASP Identity и, возможно, неправильно использую UserManager
/ UserStore
.