Pergunta

Eu cache informações sobre o usuário atualmente conectado na sessão. Esta informação é preguiçosa sempre que um CurrentUser A propriedade na minha classe de aplicativo global é usada. Isso é feito chamando getUser () na minha implementação personalizada do associação, que carrega o usuário da sessão ou carrega o usuário do banco de dados e lança o objeto do usuário na sessão.

Como devo lidar com esse cenário?

  1. O usuário faz login.
  2. O administrador exclui o usuário (ou desativam ... o ponto é que eles não podem mais fazer login).
  3. A sessão do usuário expira.
  4. O usuário navega para uma página ou faz uma solicitação ou qualquer outra coisa.

Atualmente, se esse cenário ocorrer, o NullReferenceExceptions será lançado por todo o lugar, porque o ASP .NET Framework chama getUser () que não retorna nada porque não consegue encontrar o usuário no banco de dados (e não há nada na sessão porque expirou).

Foi útil?

Solução

Se o seu aplicativo acha que um usuário está assinado, mas o usuário não pode ser encontrado, uma opção pode ser usar FormsAuthentication.SignOut() Para fazer o Asp.net esquecer o usuário. Eles devem ser chutados de volta para a tela de login ou o modo anônimo.

Outras dicas

Jogue uma exceção do getUser () se você vai retornar nulo. Em seguida, você pode ter a armadilha do evento Application_error essa exceção específica e redirecionar para a sua página de login.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top