CASL кажется ACL и выполняется на стороне сервера. Он определяет разрешение для каждой стороны сервера ресурсов. Angular - это клиентская структура.
Вопросы «как лучше» обычно закрываются довольно быстро, поскольку это субъективно.
Нет разницы в том, как вы получаете доступ к ресурсу, если он защищен ACL, RBA C или чем-то еще. Если запрос http возвращает ошибку, вы можете обработать ответ и вывести любые сообщения, которые вы наберете sh. На основе «утверждений» вы, вероятно, думаете, что openid-connect / oauth2 или ваша собственная аутентификация JWT, отправляющая утверждения на стороне сервера.
Ваша собственная реализация проще для понимания, так как вы ее написали, верно? Но для написания и правильной работы требуется больше времени.
Мне известны только 2 сервера openid connect с открытым исходным кодом, это keycloak и identityserver4
Есть библиотеки для Angular, но все это очень шатко. Есть универсальная библиотека oidc / oauth2 для Angular от Манфреда Штайера, но у нее есть проблемы с потоком кода, только поток паролей и неявный поток действительно работают, а затем становится все сложнее выяснить, почему молчит refre sh не работает. Chrome готовит ie обновляет систему безопасности SameSite в ближайшее время, которая взломает многие сайты.
Есть адаптер js keycloak и репозиторий ngx-keycloak, но у них также есть свои проблемы, особенно снова token refre sh до истечения срока действия.
Существуют коммерческие провайдеры со своими библиотеками, которые я не тестировал, например, auth0 и okta.
Разработка собственной аутентификации, отдельной от ACL и / или RBA C, требует времени как на стороне сервера, так и на стороне клиента, но вы можете контролировать все. Вы можете имитировать c некоторые функции oauth2 / oid c, например конечную точку информации токена, поскольку вы отправляете JsonWebTokens (JWT).
Чем больше распределено, тем меньше монолитности c Ваше приложение тем сложнее.
Что лучше? Это всегда зависит.