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 ) associa à sessão o(s) privilégio(s) definido(s) no parâmetro |
.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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
Session : 4D. Session
Parâmetro | Tipo | Descrição | |
---|---|---|---|
Resultados | 4D. Session | <- | Objecto Session |
|
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
eEm 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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.clearPrivileges()
| Parâmetro | Tipo | | Descrição | | --------- | ---- |::| ----------------------------------------------------- | | | | | Não exige nenhum parâmetro|
|
Descrição
A função .clearPrivileges()
retira todos os privilégios associados à sessão. Como resultado, a sessão torna-se automaticamente uma sessão de convidado.
Exemplo
//Invalidate a session
var $isGuest : Boolean Session.clearPrivileges()
$isGuest:=Session.isGuest() //$isGuest is True
.expirationDate
Histórico
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.expirationDate : Text
Descrição
A propriedade .expirationDate
contém a data e hora de expiração do cookie da sessão. .
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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.hasPrivilege( privilege : Text ) : Boolean
Parâmetro | Tipo | Descrição | |
---|---|---|---|
privilege | Text | <- | Nome do privilegio a verificar |
Resultados | Parâmetros | <- | 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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.isGuest() : Boolean
Parâmetro | Tipo | Descrição | |
---|---|---|---|
Resultados | Parâmetros | <- | 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
Release | Mudanças |
---|---|
19 R8 | Suporte da propriedade "roles" das Settings |
18 R6 | Adicionado |
.setPrivileges( privilege : Text )
.setPrivileges( privileges : Collection )
.setPrivileges( settings : Object )
Parâmetro | Tipo | Descrição | |
---|---|---|---|
privilege | Text | -> | Nome do privilégio |
privileges | Collection | -> | Collection de nomes de privilégios |
settings | Object | -> | Objetos com as propriedades "privilégios" (string ou collection) |
|
Descrição
A função .setPrivileges()
associa à sessão o(s) privilégio(s) definido(s) no parâmetro.
-
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:
Propriedade | Tipo | Descrição |
---|---|---|
privileges | Text ou Collection | |
roles | Text ou Collection | |
userName | Text | Nome de usuário associado à sessão (opcional) |
Os privilégios e papéis são definidos no arquivo roles.json
do projeto. Para mais informações, consulte por favor a secção Privileges.
Se a propriedade privilegios
ou roles
conter um nome que não é declarado no arquivo roles.json
, ele é ignorado.
Como padrão quando não houver um privilégio associado à sessão, a sessão é 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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.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
Release | Mudanças |
---|---|
18 R6 | Adicionado |
.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.