Session
Session objects are returned by the Session
command when scalable sessions are enabled in your project. The Session object is automatically created and maintained by the 4D web server to control the session of a web client (e.g. a browser). This object provides the web developer with an interface to the user session, allowing to manage privileges, store contextual data, share information between processes, and launch session-related preemptive processes.
For detailed information about the session implementation, please refer to the web server Sessions section.
Resumo
.clearPrivileges() elimina todos os privilégios associados à sessão |
.expirationDate : Text a data e hora de expiração da cookie de sessão |
.hasPrivilege( privilege : Text ) : Boolean devolve True se o privilegio estiver associado à sessão, ou então False em caso contrário |
.idleTimeout : Integer o tempo de inatividade da sessão (em minutos), depois da qual a sessão é fechada automaticamente por 4D |
.isGuest() : Boolean devolve True se a sessão for uma sessão Guest (ou seja, não tem privilégios) |
.setPrivileges( privilege : Text ) .setPrivileges( privileges : Collection ) .setPrivileges( settings : Object ) associa os privilégios definidos no parâmetro à sessão |
.storage : Object um objeto partilhado que pode ser usado para armazenar informação disponível a todas as petições do cliente web |
.userName : Text o nome de usuuário associado à sessão |
Session
Histórico
Versão | Mudanças |
---|---|
v18 R6 | Adicionado |
Session : 4D.Session
Parameter | Type | Descrição | |
---|---|---|---|
Resultado | 4D.Session | <- | Session object |
Descrição
O comando Session
devolve o objeto Session
correspondente à sessão web atual do usuário escalável.
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
, andOn REST Authentication
database methods,- ORDA Data Model Class functions called with REST requests,
- code processed through 4D tags in semi-dynamic pages (4DTEXT, 4DHTML, 4DEVAL, 4DSCRIPT/, 4DCODE)
- project methods with the "Available through 4D tags and URLs (4DACTION...)" attribute and called through 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
//action_Session method
Case of
:(Session#Null)
If(Session.hasPrivilege("WebAdmin")) //calling the hasPrivilege function
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ão | Mudanças |
---|---|
v18 R6 | Adicionado |
.clearPrivileges() | Parameter | Type | | Descrição | | --------- | ---- |::| ------------------------------- | | | | | Does not require any parameters |
Descrição
A função .clearPrivileges()
elimina todos os privilégios associados à sessão. Como resultado, a seção se converte automaticamente em uma sessão de convidado.
Exemplo
//Invalidate a session
var $isGuest : Boolean
Session.clearPrivileges()
$isGuest:=Session.isGuest() //$isGuest is True
.expirationDate
Histórico
Versão | Mudanças |
---|---|
v18 R6 | Adicionado |
.expirationDate : Text
Descrição
A propriedade .expirationDate
contém a data e hora de expiração da cookie de 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 //eg "2021-11-05T17:10:42Z"
.hasPrivilege()
Histórico
Versão | Mudanças |
---|---|
v18 R6 | Adicionado |
.hasPrivilege( privilege : Text ) : Boolean
Parameter | Type | Descrição | |
---|---|---|---|
privilege | Texto | <- | Nome do privilegio a verificar |
Resultado | Booleano | <- | True se a sessão tiver privilege, False caso contrário |
Descrição
A função .hasPrivilege()
devolve True se o privilegio estiver associado à sessão, ou então False em caso contrário.
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ão | Mudanças |
---|---|
v18 R6 | Adicionado |
.idleTimeout : Integer
Descrição
A propriedade .idleTimeout
contiene o tempo de inatividade da sessão (em minutos), depois da qual a sessão é fechada automaticamente 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.
The value cannot be less than 60: if a lower value is set, the timeout is raised up to 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ão | Mudanças |
---|---|
v18 R6 | Adicionado |
.isGuest() : Boolean
Parameter | Type | Descrição | |
---|---|---|---|
Resultado | Booleano | <- | True se a sessão for uma sessão Guest, False caso contrário |
Descrição
A função .isGuest()
devolve True se a sessão for uma sessão Guest (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ão | Mudanças |
---|---|
v18 R6 | Adicionado |
.setPrivileges( privilege : Text )
.setPrivileges( privileges : Collection )
.setPrivileges( settings : Object )
Parameter | Type | Descrição | |
---|---|---|---|
privilege | Texto | -> | Nome do privilégio |
privileges | Coleção | -> | Collection de nomes de privilégios |
settings | Objeto | -> | Objetos com as propriedades "privilégios" (string ou collection) |
Descrição
A função .setPrivileges()
associa os privilégios definidos no parâmetro à sessão.
In the privilege parameter, pass a string containing a privilege name (or several comma-separated privilege names).
In the privileges parameter, pass a collection of strings containing privilege names.
In the settings parameter, pass an object containing the following properties:
Propriedade | Type | Descrição |
---|---|---|
privileges | Text ou Collection | |
userName | Texto | Nome de usuário associado à sessão (opcional) |
Se a propriedade privileges
conter um nome de privilégio inválido, é ignorado.
In the current implementation, only the "WebAdmin" privilege is available.
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
Versão | Mudanças |
---|---|
v18 R6 | Adicionado |
.storage : Object
Descrição
A propriedade .storage
contém um objeto partilhado que pode ser usado para armazenar informação disponível a todas as petições do cliente 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ão | Mudanças |
---|---|
v18 R6 | Adicionado |
.userName : Text
Descrição
A propriedade .userName
contém o nome de usuuá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.