Muszę kontrolować dostęp do widoków na podstawie poziomów uprawnień użytkowników (nie ma ról, tylko poziomy uprawnień dla poziomów operacji CRUD przypisanych do użytkowników) w mojej aplikacji MVC 4.
Jako przykład; poniżej AuthorizeUser będzie mój atrybut niestandardowy i muszę go używać w następujący sposób:
[AuthorizeUser(AccessLevels="Read Invoice, Update Invoice")]
public ActionResult UpdateInvoice(int invoiceId)
{
// some code...
return View();
}
[AuthorizeUser(AccessLevels="Create Invoice")]
public ActionResult CreateNewInvoice()
{
// some code...
return View();
}
[AuthorizeUser(AccessLevels="Delete Invoice")]
public ActionResult DeleteInvoice(int invoiceId)
{
// some code...
return View();
}
Czy można to zrobić w ten sposób?
.Name.ToString()
jest zbędne, ponieważName
właściwość jest już ciągiem znakówOto modyfikacja dla pliku prev. odpowiedź. Główna różnica polega na tym, że gdy użytkownik nie jest uwierzytelniony, używa oryginalnej metody „HandleUnauthorizedRequest” do przekierowania na stronę logowania:
źródło
Może jest to przydatne dla każdego w przyszłości, zaimplementowałem niestandardowy atrybut autoryzacji, taki jak ten:
źródło
Jeśli używasz WEB API z Claims, możesz użyć tego:
źródło