Pracuję nad aplikacją, w której staramy się zachować separację problemów tak mocno, jak to możliwe. Przekonujemy się, że przekrojowe obawy związane z bezpieczeństwem powodują szereg komplikacji.AOP i stosowanie zabezpieczeń do elementów interfejsu użytkownika
Jednak wygląda na to, że można je złagodzić za pomocą atrybutów i programowania zorientowanego na aspekt.
Rozumiem to w zakresie stosowania aspektów do kodu warstwy domeny, ale co zrobić, jeśli chcesz zastosować go do elementów interfejsu użytkownika? Na przykład, co jeśli nie chcę wyświetlać przycisku, gdy użytkownik nie ma uprawnień do wykonania tej funkcji?
W naszej aplikacji MVC, w tym momencie musielibyśmy napisać (pseudo-kod poniżej):
<% if (user.CanSeeSomeData) { <%=Html.TextBox("MyTextBox") } %>
Ale chcielibyśmy, aby kontrolować wyświetlanie z atrybutami a la AOP, jeśli to możliwe.
Wszelkie pomysły?
Ponadto, jeśli istnieją narzędzia stron trzecich, o otwartym kodzie źródłowym, które byłyby przydatne, sugestie te są mile widziane.
dzięki za odpowiedź, graffic. Więc, czy mówisz, że podejście atrybutów jest w porządku, ale powinno być zrobione w Conroller/ViewModel, czy też mówisz, że instrukcja if to sposób? * [To jest sposób w jaki widoki powinny być "] * – jlembke
Ponadto, w jaki sposób można to osiągnąć w ViewModel? Mogę umieścić atrybut na właściwości, ale to nie przekłada się na pokazywanie/ukrywanie/wyłączanie elementów formularza. Czy mówisz, że ja * nie powinien * staram się ukryć kontroli w ogóle, ale po prostu obsługiwać naruszenia dostępu w ViewModel/Controller? – jlembke