Czy użytkownik może usunąć rekord

Odpowiedz Nowy wątek
2018-12-30 19:03
1

Cześć, pytam się czy w .NetCore 2 jest po prostu jakiś wbudowany / zalecany mechanizm do wykonania takiego zadania.

Dajmy na to, że idzie request żeby usunąć zamówienie. Jednak zamówienie może usunąć tylko administrator albo autor tego zamówienia.
W tym momencie robię to tak, że sprawdzam w serwisie, czy zalogowany jest adminem albo czy zalogowany ma id takie jak twórca zamówienia. Czy jest do tego jakaś inna lepsza droga? Myślałem o Policy, ale tutaj chyba to nie wypali. Mam różne modele, które mogą być usuwane.

Pozostało 580 znaków

2018-12-30 20:22
1

Własny atrybut autoryzacyjny na akcji?

Pozostało 580 znaków

2018-12-30 20:26
0

Ale w .tym atrybucie i tak trzeba by sprawdzać czy zalogowany user to admin lub autor.

Pozostało 580 znaków

2018-12-30 20:30
1
jacek.placek napisał(a):

Ale w .tym atrybucie i tak trzeba by sprawdzać czy zalogowany user to admin lub autor.

No zawsze będzie trzeba, bo tak wygląda autoryzacja, ale warto to robić w odpowiednim miejscu.

Pozostało 580 znaków

2018-12-30 20:38
2

I atrybut to odpowiednie miejsce to tego? To raczej nie jest kwestia czy user może wykonać akcje delete bo może tylko logiki biznesowej. Bo na razie jest admin lub autor A potem może być grupa userow, userzy w jakimś oddziale, status rekordu i mnóstwo innych ograniczeń biznesowych.

Pozostało 580 znaków

2018-12-31 04:07
0

Dawno temu w jednym projekcie zrobiłem do analogicznego zadania właśnie atrybut (który oczywiście używał jakiegoś serwisu, który z kolei pytał bazę). Jakiś wielkich wad tego rozwiązania wtedy nie widziałem, ale teraz bym tak nie zrobił, bo to jednak jest taki trochę słaby design (umieszczanie logiki biznesowej w warstwie prezentacji).
Z drugiej strony, to problem trochę podobny do tego, gdzie umieszczać walidację - czy przy kontrolerach, czy w logice biznesowej. Odpowiedź na oba te pytania niekoniecznie jest oczywista.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
edytowany 1x, ostatnio: somekind, 2018-12-31 04:09

Pozostało 580 znaków

2018-12-31 10:20
0
somekind napisał(a):

Dawno temu w jednym projekcie zrobiłem do analogicznego zadania właśnie atrybut (który oczywiście używał jakiegoś serwisu, który z kolei pytał bazę). Jakiś wielkich wad tego rozwiązania wtedy nie widziałem, ale teraz bym tak nie zrobił, bo to jednak jest taki trochę słaby design (umieszczanie logiki biznesowej w warstwie prezentacji).
Z drugiej strony, to problem trochę podobny do tego, gdzie umieszczać walidację - czy przy kontrolerach, czy w logice biznesowej. Odpowiedź na oba te pytania niekoniecznie jest oczywista.

@somekind W MVC kontrolery są w warstwie prezentacji, ale przy SPA już taki WebApi kontroler już chyba niekoniecznie? Taką logikę też można wydzielić w jedno miejsce i używać w tym atrybucie. Dla mnie jedna z głównych zalet tego rozwiazania jest to że endpoint jest bezpieczny od samego początku. Przy sprawdzaniu tego głębiej w aplikacji, ktoś przy rozszerzeniu logiki może zapomnieć żeby to sprawdzić. Poza tym tak jak powiedziałeś ta logika i tak będzie wyciekac do warstwy prezentacji gdy chcemy coś pokazać/umożliwić/zwalidowac po stronie widoku.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0