Não existe uma boa maneira de um servidor desfazer a autenticação de
um usuário que se logou via HTTP Basic Authentication (o método padrão
do HTTP, usado pelo Zope mas não pelo Plone).

O motivo é que no protocolo HTTP não existe o conceito de sessão.
Qualquer sistema Web que implementa sessões o faz se a ajuda do
protocolo, em geral usando cookies ou identificadores de sessão
apendados à URL.

Quem gerencia o login no HTTP Básico é o navegador. É por isso,
inclusive, que quem pede a senha é  navegador (exibindo uma caixa de
diálogo). Quando se usa algum mecanismo de sessão, a autenticação não
é feita numa caixa de diálogo gerada pelo navegador, e sim num
formulário HTML. No caso da autenticação básica, não existe uma forma
100% garantida do servidor dizer ao navegador para deixar de enviar a
senha, o que simularia um "logoff". Esta situação simplesmente não é
prevista no protocolo HTTP.

Na autenticação por cookies, o servidor pode enviar uma mensagem para
o browser deletar o cookie da sessão. Se a sessão é mantida via um
identificador nas URLs, novamente o servidor tem controle, pois é ele
que gera as URLs dos links que o navegador usa para navegar.

Resumindo, se a sua aplicação exige que o usuário possa se deslogar
facilmente, você será forçado a usar algum método de autenticação por
sessão, como faz o Plone.

[ ]s
Luciano

Responder a