У меня есть код, который вызывает действие «Удалить» из моего FriendApi, но я бы хотел его авторизовать.Я санкционировал действие Удалить в Api, пользователи, которые не являются администраторами, все еще могут «удалять» данные, но когда я обновляю страницу, данные все еще там.Как я могу авторизовать это и убедиться, что, если кто-то не является администратором и нажимает «Удалить», ему предлагается войти в систему с учетной записью, обладающей привилегиями для выполнения этого действия.Вот мой Api и моя страница Index, где вызывается Api.
// DELETE: api/FriendApi/5
[Authorize(Roles = "Admin")]
[ResponseType(typeof(FriendModel))]
public IHttpActionResult DeleteFriendModel(int id)
{
FriendModel friendModel = db.friends.Find(id);
if (friendModel == null)
{
return NotFound();
}
db.friends.Remove(friendModel);
db.SaveChanges();
return Ok(friendModel);
}
Вот мой индекс.Поэтому моя главная цель - сделать ее видимой для роли «Менеджер», но только роль «Администратор» может удалить материал.
@model List<MVCLab5._1.Models.FriendModel>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<table class="table table-bordered table-responsive table-hover" id="myTable">
<thead>
<tr>
<td>Friend ID</td>
<td>Name</td>
<td>City</td>
<td></td>
</tr>
</thead>
<tbody>
@{
//int i = 0;
foreach (var obj in Model)
{
<tr>
<td>@obj.FriendId</td>
<td>@obj.Name</td>
<td>@obj.Place</td>
<td>
@if (User.IsInRole("Admin") || User.IsInRole("Manager"))
{
<button data-friend-id="@obj.Id" class="btn btn-default js-delete">Delete</button>
}
@*@Html.ActionLink("Delete", "DeleteFriend", new { id = obj.Id }, new { @class = "btn btn-default" })*@
@if (User.IsInRole("Admin") || User.IsInRole("Manager"))
{
@Html.ActionLink("Edit", "EditFriend", new { id = obj.Id }, new { @class = "btn btn-default" })
}
</td>
</tr>
//i++;
}
}
</tbody>
</table>
@section scripts{
<script>
$(document).ready(function () {
var table = $('#myTable').DataTable();
$("#myTable .js-delete").on("click", function () {
var button = $(this);
$.ajax({
url: "/api/FriendApi/" + button.attr("data-friend-id"),
method: "DELETE",
success: function (result) {
console.log(result)
table.row(button.parents("tr")).remove().draw();
}
});
});
});
</script>
}