Opa.

On 3/13/07, FLÁVIO GOMES DA SILVA LISBOA
<[EMAIL PROTECTED]> wrote:
>
>
>
>
>
>
> Bem, estou usando o Plone. Aliás, o grande desafio que tenho há alguns
>  meses é aproveitar essa ferramenta e seus recursos para fazer um
>  portal de verdade.
>  O usuário não deve se deslogar "facilmente". Eu quero abortar o
>  usuário, dado um evento certo, no caso, alteração da senha após
>  primeiro acesso.
>  Se ele realmente é orientado a objetos, então deve haver alguém para
>  quem eu peço "por favor, deslogue". Se ele faz isso quando clico num
>  link, então pode fazer se eu enviar uma requisição sem interferência
>  do usuário.
>  Deixe ver se eu entendi, eu vou ter de esvaziar ou destruir o
>  dicionário SESSION?

Retirado do script logout fo plone:

from Products.CMFCore.utils import getToolByName

try:
    context.acl_users.logout(context.REQUEST)
except:
    pass  # XXX we expect Unauthorized, but why do we do a bare except then?

REQUEST = context.REQUEST


# Invalidate existing sessions, but only if they exist.
sdm = getToolByName(context, 'session_data_manager', None)
if sdm is not None:
    session = sdm.getSessionData(create=0)
    if session is not None:
        session.invalidate()

from Products.CMFPlone import transaction_note
transaction_note('Logged out')

target_url = REQUEST.URL1
# Double '$' to avoid injection into TALES
target_url = target_url.replace('$','$$')
target_url += '/logged_out'
return state.set(next_action='redirect_to:string:' + target_url )

Advinha onde é que ele 'desloga' o usuário? ;)

[]'s
Fernando
>
>  --- Em zope-pt@yahoogrupos.com.br, "Luciano Ramalho" <[EMAIL PROTECTED]>
>  escreveu
>  >
>  > 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