У меня есть отдельная база данных, заполненная сотрудниками, каждая с уникальным адресом электронной почты. Создаваемый мной веб-сайт, сотрудники могут регистрировать учетную запись, и если у них есть соответствующий адрес электронной почты, я бы хотел, чтобы они увидели их контактную информацию и, если возможно, отредактировали ее.В ASP MVC Identity, каков наилучший способ ограничения доступа на основе критериев?
Вот такой код, который я смог использовать для этого.
[AllowAnonymous]
// GET: Contacts/Details/
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Contact contact = db.Contacts.Find(id);
if(User.IsInRole("Admin")||(User.Identity.GetUserName()==contact.Email))
{
return View(contact);
}
if (contact == null)
{
return HttpNotFound();
}
return RedirectToAction("AccessDenied","Error");
}
В идеале я хотел бы удалить [AllowAnonymous]
и иметь что-то вроде
[Authorize(Roles="Admin",Users=User.Identity.GetUserName())]
, но это тянет ошибку:
"User.Identity.GetUserName() an object reference is required".
Любые suggesions?
Что вы пытаетесь достичь с помощью «Users = User.Identity.GetUserName()»? Изменить: О, я вижу сейчас. Возможно, вы сможете создать фильтр действий. Это довольно безболезненный процесс. –
Как вы создаете претензии? Используете ли вы по умолчанию коды ASP.Net Identity с ASP.Net MVC? – Win