Usuário com melhor resposta
Dúvida sobre Sessions

Pergunta
-
Bom dia pessoal ! Estou com dúvidas simples(para quem já sabe) sobre Sessions !
Antes de bombardea-los com perguntas hehe. gostaria de citar que já olhei alguns tópicos aqui no msdn Thread sobre Session e em outros forums também.
Gostaria de saber:
Como fazer exatamente para criar, setar o timeout , fazer retornar para a página de log in caso não esteja logado etc...Eu sei que, no link que postei aqui já mostra isso, só que eu tentei e o timeout não funcionou... Até com WebConfig eu tentei e não funcionou, li algo sobre Authentication Mas não consegui fazer. Então venho humildemente pedir-lhes ajuda para resolver este problema (È para meu trabalho).
Agradeço atenção !
Respostas
-
Alan o timeout da session eu deixo sempre com o vaor padrão no IIS portanto não mexo nisso, qto a saber se um usuário se logou na página vc tem que fazer esse teste no load de todas as páginas, se o usuario se logar e vc não usar a classe membershipprovider o teste para saber se o usuário esta loga é assim :
if (String.IsnullorEmpty(session["nomedasession"]))
Se vc usar a classe membershipprovider basta vc verificar
if (!Request.IsAuthenticated)
Nos casos acima ele nao logou e a sessao é vazia ou nula entao vc redireciona para a pagina de login.
Para sistemas com muitos acessos eu tive problemas com sessions pq o gerenciamento delas é feito pelo IIS, tenho umm sistema que é muito acessado, para ele fiz assim, o usuário se loga eu gravo o acesso dele em uma tabela com a data e hora, gravo isso em um cookie criptografado, a cada página testo a data e hora se passar de um determinado tempo eu mando o usuário se logar novamente, qdo ele sai da aplicação eu deleto o registro dele da tabela, essa tabela é enxuta e funciona perfeito.
Junior
- Sugerido como Resposta Seilor Bonancio JuniorModerator segunda-feira, 7 de janeiro de 2013 12:19
- Marcado como Resposta Ricardo RussoModerator segunda-feira, 7 de janeiro de 2013 12:54
Todas as Respostas
-
Alan o timeout da session eu deixo sempre com o vaor padrão no IIS portanto não mexo nisso, qto a saber se um usuário se logou na página vc tem que fazer esse teste no load de todas as páginas, se o usuario se logar e vc não usar a classe membershipprovider o teste para saber se o usuário esta loga é assim :
if (String.IsnullorEmpty(session["nomedasession"]))
Se vc usar a classe membershipprovider basta vc verificar
if (!Request.IsAuthenticated)
Nos casos acima ele nao logou e a sessao é vazia ou nula entao vc redireciona para a pagina de login.
Para sistemas com muitos acessos eu tive problemas com sessions pq o gerenciamento delas é feito pelo IIS, tenho umm sistema que é muito acessado, para ele fiz assim, o usuário se loga eu gravo o acesso dele em uma tabela com a data e hora, gravo isso em um cookie criptografado, a cada página testo a data e hora se passar de um determinado tempo eu mando o usuário se logar novamente, qdo ele sai da aplicação eu deleto o registro dele da tabela, essa tabela é enxuta e funciona perfeito.
Junior
- Sugerido como Resposta Seilor Bonancio JuniorModerator segunda-feira, 7 de janeiro de 2013 12:19
- Marcado como Resposta Ricardo RussoModerator segunda-feira, 7 de janeiro de 2013 12:54
-
Alan o timeout da session eu deixo sempre com o vaor padrão no IIS portanto não mexo nisso, qto a saber se um usuário se logou na página vc tem que fazer esse teste no load de todas as páginas, se o usuario se logar e vc não usar a classe membershipprovider o teste para saber se o usuário esta loga é assim :
if (String.IsnullorEmpty(session["nomedasession"]))
Se vc usar a classe membershipprovider basta vc verificar
if (!Request.IsAuthenticated)
Nos casos acima ele nao logou e a sessao é vazia ou nula entao vc redireciona para a pagina de login.
Para sistemas com muitos acessos eu tive problemas com sessions pq o gerenciamento delas é feito pelo IIS, tenho umm sistema que é muito acessado, para ele fiz assim, o usuário se loga eu gravo o acesso dele em uma tabela com a data e hora, gravo isso em um cookie criptografado, a cada página testo a data e hora se passar de um determinado tempo eu mando o usuário se logar novamente, qdo ele sai da aplicação eu deleto o registro dele da tabela, essa tabela é enxuta e funciona perfeito.
Junior
Primeiramente desculpas pela demora para dar um feedback, é que está uma correria do cão entre trabalho e termino do meu TCC ;~
Gostei mesmo desta ideia da tabela, vou considerar a hipótese de aderir ao seu método (imitããão hehe ).Bom, o grade problema na verdade é assim: Setando OU NÂO o timeout apos uns +ow- 30segundos (as vezes menos e as vezes um pouco mais ) caso eu desse refresh na página ou clicasse em algum botão/link . . . Ele voltava para a página de log in, era como se a session se perdesse no meio do caminho... Alguma dica sobre isto ?
- Editado Alan Naidon terça-feira, 8 de janeiro de 2013 16:06