Skip to main content
Version: v19 R8 BETA

Session

Os objetos Session são devolvidos pelo comando Session quando são habilitadas as sessões escaláveis em seu projeto. O objeto Session é criado e mantido automaticamente pelo servidor web 4D para controlar a sessão de um cliente web (por exemplo, um navegador). Esse objeto oferece ao desenvolvedor web uma interface para a sessão de usuário, permitindo gerenciar privilégios, armazenar dados contextuais, partilhar informação entre processos e lançar processos preemptivos relacionados a sessão.

Para obter informação detalhada sobre a implementação da sessão, consulte Sessões do servidor web.

Resumo

.clearPrivileges()    retira todos os privilégios associados à sessão
.expirationDate : Text    a data e hora de expiração do cookie da sessão
.hasPrivilege( privilege : Text ) : Boolean    retorna Verdadeiro se o privilégio estiver associado à sessão, e Falso de outra forma
.idleTimeout : Integer    o tempo limite da sessão de inatividade (em minutos), após o qual a sessão é automaticamente encerrada por 4D
.isGuest() : Boolean    retorna Verdadeiro se a sessão for uma sessão de Convidado (ou seja, não tem privilégios)
.setPrivileges( privilege : Text )
.setPrivileges( privileges : Collection )
.setPrivileges( settings : Object )
    associates the privilege(s) and/or role(s) defined in the parameter to the session
.storage : Object    um objeto partilhado que pode ser utilizado para armazenar informação disponível para todos os pedidos do cliente da web
.userName : Text    o nome de usuário associado à sessão

Session

Histórico
VersãoMudanças
v18 R6Adicionado

Session : 4D. Session

ParâmetrosTipoDescrição
Resultados4D. Session<-Session object

Descrição

O comando Session devolve o objecto Sessão correspondente à actual sessão web escalável do utilizador.

Este comando só funciona quando estão ativadas as sessões escaláveis. Devolve Null quando as sessões estiverem desabilitadas ou quando utilizar sessões herdadas.

Quando se habilitam as sessões escaláveis, o objeto Sessão está disponível desde qualquer processo web nos seguintes contextos:

  • On Web Authentication, On Web Connection, e métodos databaseOn REST Authentication,
  • Em Mobile App Authentication e Em Mobile App Action métodos de base de dados para pedidos móveis,
  • As funções Data Model Class ORDA chamadas pelas petições REST,
  • código processado a través das etiquetas 4D nas páginas semidinâmicas (4DTEXT, 4DHTML, 4DEVAL, 4DSCRIPT/, 4DCODE)
  • os métodos projeto com o atributo "Available through 4D tags and URLs (4DACTION...)" e chamados através de 4DACTION/ urls.

Exemplo

Se definiu o método action_Session com o atributo "Available through 4D tags and URLs". Pode chamar ao método introduzindo a URL abaixo no navegador:

IP:port/4DACTION/action_Session
  //método action_Session
Case of
:(Session#Null)
If(Session.hasPrivilege("WebAdmin")) //chamada da função hasPrivilege
WEB SEND TEXT("4DACTION --> Session is WebAdmin")
Else
WEB SEND TEXT("4DACTION --> Session is not WebAdmin")
End if
Else
WEB SEND TEXT("4DACTION --> Sesion is null")
End case

.clearPrivileges()

Histórico
VersãoMudanças
v18 R6Adicionado

.clearPrivileges()

ParâmetrosTipoDescrição
Não exige nenhum parâmetro

Descrição

A função .clearPrivileges() retira todos os privilégios associados à sessão. Summary -->devolve True se o privilegio estiver associado à sessão, ou então False em caso contrário.

Exemplo

//Invalidate a session
var $isGuest : Boolean Session.clearPrivileges()
$isGuest:=Session.isGuest() //$isGuest is True

.expirationDate

Histórico
VersãoMudanças
v18 R6Adicionado

.expirationDate : Text

Descrição

A propriedade .expirationDate contém a data e hora de expiração do cookie da sessão. O valor se expressa como texto no formato ISO 8601: YYYY-MM-DDTHH:MM:SS.mmmZ.

Essa propriedade é apenas leitura. É recalculada automaticamente se modificar o valor da propriedade .idleTimeout.

Exemplo

var $expiration : Text
$expiration:=Session.expirationDate //por exemplo "2021-11-05T17:10:42Z"

.hasPrivilege()

Histórico
VersãoMudanças
v18 R6Adicionado

.hasPrivilege( privilege : Text ) : Boolean

ParâmetrosTipoDescrição
privilegeText<-Nome do privilegio a verificar
ResultadosBooleano<-True se a sessão tiver privilege, False caso contrário

Descrição

A função .hasPrivilege() retorna Verdadeiro se o privilégio estiver associado à sessão, e Falso de outra forma.

Exemplo

Se quiser comprovar se o privilégio "WebAdmin" está associado à sessão:

If (Session.hasPrivilege("WebAdmin"))
//Access is granted, do nothing Else
//Display an authentication page End if

.idleTimeout

Histórico
VersãoMudanças
v18 R6Adicionado

.idleTimeout : Integer

Descrição

A propriedade .idleTimeout contém o tempo limite da sessão de inatividade (em minutos), após o qual a sessão é automaticamente encerrada por 4D.

Se não se definir esta propriedade, o valor padrão é 60 (1h).

Quando se definir esta propriedade, a propriedade .expirationDate é atualizada em consequência.

O valor não pode ser inferior a 60: se definir um valor inferior, o tempo de espera se eleva até 60.

Essa propriedade éapenas escrita.

Exemplo

If (Session.isGuest())
// A Guest session will close after 60 minutes of inactivity
Session.idleTimeout:=60 Else
// Other sessions will close after 120 minutes of inactivity
Session.idleTimeout:=120 End if

.isGuest()

Histórico
VersãoMudanças
v18 R6Adicionado

.isGuest() : Boolean

ParâmetrosTipoDescrição
ResultadosBooleano<-True se a sessão for uma sessão Guest, False caso contrário

Descrição

A função .isGuest() retorna Verdadeiro se a sessão for uma sessão de Convidado (ou seja, não tem privilégios).

Exemplo

No método base On Web Connection:

If (Session.isGuest())
//Do something for Guest user End if

.setPrivileges()

Histórico
VersãoMudanças
v19 R8Support of "roles" Settings property
v18 R6Adicionado

.setPrivileges( privilege : Text )
.setPrivileges( privileges : Collection )
.setPrivileges( settings : Object )

ParâmetrosTipoDescrição
privilegeText->Nome do privilégio
privilegesCollection->Collection de nomes de privilégios
settingsObjeto->Objetos com as propriedades "privilégios" (string ou collection)

Descrição

A função .setPrivileges() associates the privilege(s) and/or role(s) defined in the parameter to the session.

  • No parâmetro privilege, passe uma string contendo um nome de privilégio (ou vários nomes de privilégio separados por vígulas).

  • No parâmetro privileges, passe uma coleção de strings contendo nomes de privilégios.

  • No parâmetro settings, passe um objeto contendo as propriedades abaixo:

PropriedadeTipoDescrição
privilegesText ou Collection
  • Strings contendo um nome de privilégio ou
  • Collection de strings contendo nomes de privilégios
  • rolesText ou Collection
  • String containing a role, or
  • Collection of strings containing roles
  • userNameTextNome de usuário associado à sessão (opcional)
    info

    Privileges and roles are defined in roles.json file of the project. For more information, please refer to the Privileges section.

    If the privileges or roles property contains a name that is not declared in the roles.json file, it is ignored.

    By default when no privilege or role is associated to the session, the session is a Guest session.

    A propriedade userName está disponível no nível do objeto da sessão (apenas leitura).

    Exemplo

    Em um método de autenticação personalizado, deve estabecer o privilégio "WebAdmin" ao usuário:

    var $userOK : Boolean

    ... //Authenticate the user If ($userOK) //The user has been approved
    var $info : Object
    $info:=New object()
    $info.privileges:=New collection("WebAdmin")
    Session.setPrivileges($info)
    End if

    .storage

    Histórico
    VersãoMudanças
    v18 R6Adicionado

    .storage : Object

    Descrição

    A propriedade .storage contém um objeto partilhado que pode ser utilizado para armazenar informação disponível para todos os pedidos do cliente da web.

    Quando um objeto Session for criado, a propriedade .storage é vazia. Já que é um objeto partilhado, essa propriedade estará disponível no objeto Storage do servidor.

    Da mesma forma que o objeto Storage do servidor, a propriedade .storage sempre será "single": adicionar um objeto partilhado ou uma collection partilhada a .storage não cria um grupo partilhado.

    Esas propriedade é read only mas retorna um objeto read-write.

    Exemplo

    Se quiser armazenar a IP do cliente na propriedade .storage. Pode escrever no método de banco de dados On Web Authentication:

    If (Session.storage.clientIP=Null) //first access
    Use (Session.storage)
    Session.storage.clientIP:=New shared object("value"; $clientIP)
    End use
    End if

    .userName

    Histórico
    VersãoMudanças
    v18 R6Adicionado

    .userName : Text

    Descrição

    A propriedade .userName contém o nome de usuário associado à sessão. Pode usá-la para identificar o usuário dentro de seu código.

    Essa propriedade é uma string vazia como padrão. Pode ser estabelecida usando a propriedade privileges da função setPrivileges().

    Essa propriedade éapenas leitura.