ColdFusion: quando definir as variáveis de sessão?
Quando um utilizador pede uma página, é quando uma sessão é iniciada para esse utilizador? Pelo que posso dizer, uma sessão é iniciada assim que você faz um pedido de página...
Se for este o caso, quando é que cria variáveis de sessão? ou seja, nome de utilizador, Senha, preferências, etc... a qualquer hora?
2 answers
Sim, O âmbito da sessão para o utilizador é configurado no primeiro pedido. No entanto, depende da sua preferência quanto a quando você quer definir várias bandeiras e valores. Você provavelmente não quer colocar a senha no escopo da sessão.
O que eu gosto de fazer é colocar valores específicos do utilizador numa estrutura do utilizador. Assim, no início do pedido, eu verificaria para a variável e configuração se ela não existe. Por exemplo...
<cfif not structkeyexists(session, "user")>
<cfset session.user = {
authorized = false
, admin = false
, username = ''
, accountid = ''
<!--- etc --->
} />
</cfif>
Quando o utilizador se ligar, poderá então preencher os valores apropriados e definir sessao.usuario.authorized = true
Quando o utilizador faz login sobre esta abordagem, é possível apagar a estrutura de utilizadores.
<cfset structdelete(session, "user") />
Então na próxima página a verificação será feita novamente para a estrutura do Usuário e criada se ela não existir.
As bases para configurar e usar as variáveis de sessão são explicadas aqui .
Uma sessão é, basicamente, uma relação lógica entre um cliente e um aplicativo, portanto, variáveis de sessão estão disponíveis a partir do cliente da primeira solicitação para a sua aplicação, e a sessão é, normalmente, persistentes através de solicitações através de cookies que identificam a sessão, embora isso também pode ser feito passando os identificadores na url. Vale a pena prestar atenção à sua sessão configuração do tempo-limite, por exemplo, você pode querer fornecer um tempo-limite mais curto para bots/crawlers que não configuram cookies e, portanto, iniciará uma nova sessão para cada pedido de Página (mais detalhes sobre este).