Estou criando um aplicativo em que há gerenciamento de módulo baseado em função e ele é alterado a qualquer momento. Cenário:
- Se um usuário tiver acesso para criar e exibir Empregado, um usuário poderá criar e exibir apenas funcionários, mas no futuro administrador altere a função do usuário de criar e exibir para exibir e excluir, pois um usuário poderá realizar apenas essa atividade.
Eu tento com, [Authorize(Roles ="Staff")]
mas se o administrador alterar o tempo de execução, ele não será gerenciado.
Alguém pode investigar isso e voltar para mim?
c#
asp.net-mvc
authentication
asp.net-core
Deep Soni
fonte
fonte
Authorize(Roles ="Staff")
garante que o usuário com funçãoStaff
somente possa acessar esta ação ... Portanto, se o usuário for removido dessa função, o usuário não poderá acessar isso. Isso não está acontecendo?Create Employee
,View Employee
como @Emad Sim. Preciso de alterações no momento do login, se houver alguma alteração durante a sessão ao vivo. afetar em um papel. É possível?Respostas:
Esta é uma pergunta complicada e não há uma resposta certa, mas existem várias maneiras de fazê-lo. Primeiro, assumirei que você está usando autenticação sem estado usando uma declaração baseada em declarações. A maneira mais simples é escrever sua própria política que lerá as funções de usuário antes de cada solicitação; essa é a maneira mais simples de fazer isso e a implementação mais rápida.
Mas essa solução não tem esse desempenho porque requer uma chamada ao banco de dados em cada solicitação. Isso é bom em pequenas cargas, mas pode criar problemas no tráfego. A outra maneira é reavivar todos os tokens de usuário quando as funções mudam, mas isso é super complicado. Tenho certeza de que, se você criar algum armazenamento de acesso rápido para funções como redis, não haverá problemas para verificar todas as chamadas. Também não recomendo criar seu próprio armazenamento de usuário, pois é um pesadelo manter e manter-se atualizado em relação aos padrões de segurança.
fonte
IDocumentRepository
não poder usá-lo. mostra-me para instalar o UmbracoCMS. Você pode descobrir?Se você estiver usando Session / Cookie para armazenar os detalhes do usuário conectado, poderá esvaziá-los sempre que o Admin fizer alterações na função. Em todas as ações, você pode verificar a função em Session / Cookie e seguir em frente. Agora, assim que o usuário clicar em qualquer lugar na tela que atinja o controlador. A condição será verificada e o usuário será desconectado, pois o objeto Session / Cookie está vazio.
fonte