Acabo de habilitar autenticação e autorização através do Spring Security, e desejo fazer com que os dados salvos a partir de um usuário não sejam acessados por outros usuários. Estou tendo acesso ao usuário logado através da tag
<security:authentication property="principal"/>
e autorizações com a
<security:authorize access="isAuthenticated()">.
Como disse, gostaria que cada usuário ao acessar tivesse uma "espécie" de base de dados separada, mas que fosse possível definir que o usuário "A" possa compartilhar, visualizar, editar dados com um usuário "B" também.
Da forma como a minha aplicação está no momento, uma vez que o usuário está autenticado, se o mesmo pedir para listar objetos em uma view qualquer, o resultado será o retorno de todos os objetos daquele tipo do banco de dados, pois os mesmos não foram salvos levando em consideração quem os criou e salvou no banco de dados os mesmos.
O gerenciamento da autorização existe e tem funcionado através da Spring Security's Tag Library normalmente,
<security:authorize access="isAuthenticated()">
e
<security:authorize access="hasAuthority()">
Mas veja que agora eu estou falando somente do usuário poder ou não realizar uma ação, e sim de uma forma de vincular o usuário logado aos seus dados, e também haver uma maneira de um usuário conceder permissão para que outro usuário altere os seus dados.
Existe uma forma inteligente de fazer isso utilizando a autenticação e autorização do spring security ? Ou eu terei que fazer isso passando parâmetros via controladores que nem eu já fiz uma vez para salvar imóveis relativos a um condomínio por exemplo, e também de trazer em uma consulta somente imóveis relativos a esse condomínio da mesma forma.
Por curiosidade, a aplicação de que falo está publicada em https://smartrentmanager.herokuapp.com/ se isso ajudar em alguma coisa...
Está (na data deste post) com um permitAll() lá no / ....