Array
(
)

Usando a session por uma classe auxiliar.

Twitter/@caiouechi
   - 07 fev 2013

Bom dia galera, vou explicar o meu caso detalhado.
Eu tenho uma pagina Login.ASPX, se o usuário logar e for autenticado, ele seta a Session["Autenticado"] = "1" e redireciona para a pagina Painel.aspx
O painel.aspx , em seu code behind possui a classe painel que antes herdava o System.Web.UI.Page.
o que eu fiz?
criei uma classe chamada Permissao, que está herdando System.Web.UI.Page.
Assim, agora ao inves de herdar o System.Web.UI.Page direto, eu herdo a classe Permissao no Painel.
Na classe permissão eu criei uma propriedade e um construtor:
public bool UsuarioAutenticado
{
get
{
if ((String)Session["UsuarioAutenticado"] == "1")
return true;
else
return false;
}
}
public Permissao()
{
if (this.UsuarioAutenticado == false)
{
Server.Transfer("Login.aspx");
}
}

......................
Ou seja, (pela minha lógica), quando a pagina Login redirecionasse para a pagina Painel, cairia no construtor da Permissão e validaria o usuário.
Porém, está dando um erro bizarro:
"+ UsuarioAutenticado 'UsuarioAutenticado' threw an exception of type 'System.Web.HttpException' bool {System.Web.HttpException}",
que dispara:
Session state can only be used when enableSessionState is set to true, either in a configuration file or in the Page directive. Please also make sure that System.Web.SessionStateModule or a custom session state module is included in the <configuration>\<system.web>\<httpModules> section in the application configuration.

...
só que eu ja setei o EnableSessionState="True" no painel! e até <pages enableSessionState="true"></pages> no web config!

Alguém tem uma luz?

Twitter/@caiouechi
   - 07 fev 2013

uma moça falou:

"Esse código está numa classe herdada pela página certo?

Acontece que a Session só pode ser acessada no contexto da página. Talvez funcione se você usar:

HttpContext.Current.Session["propriedade"]"

..

ja tentei usar o httpcontext.current.session, porém ele fica como nulo =(

0
|
0

Robson Robsonalves.net
   - 07 fev 2013

Tenta definir a session direto da página:

<%@ Page enableSessionState = "true" %>

0
|
0

Twitter/@caiouechi
   - 07 fev 2013

um camarada senior aqui da empresa resolveu.

a questão é a seguinte, eu estava tentando acessar o valor da propriedade no construtor.

dai o sistema acessava a propriedade e disparava a verificação na session.

SÓ QUE, A SESSION AINDA NÃO FOI CRIADA NESSE CICLO DA PAGINA.

OU SEJA,

criei:

protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);

if (!this.UsuarioAutenticado)
Server.Transfer("LogarNoSistema.aspx");
}

...

Robson, no topico anterior vc disse pra fazer o override no Onload, eu falei que tinha feito soh que tinha cagado todo page load...

descobri que faltava o base.OnLoad(e);

Valeu!!

0
|
0

Robson Robsonalves.net
   - 07 fev 2013

Muito bom!

Keep Coding

0
|
0

Twitter/@caiouechi
   - 07 fev 2013

valeu robson! e parabens por agora ser colaborador! Rs!! \O

Keep making questions on devmedia, rS!

0
|
0

Robson Robsonalves.net
   - 08 fev 2013

Caio! Vlw cara!!

Entendendo que o assunto está resolvido!
Tranco o Tópico!

Abraços!

0
|
0

Twitter/@caiouechi
   - 08 fev 2013

teste

0
|
0

Twitter/@caiouechi
   - 08 fev 2013

Robson, quando vc tranca o topico, eu não deveria deixar de ter a possibilidade de postar? Rs

fiz só um teste.

0
|
0

Twitter/@caiouechi
   - 08 fev 2013

Robson, quando vc tranca o topico, eu não deveria deixar de ter a possibilidade de postar? Rs

fiz só um teste.

0
|
0

Robson Robsonalves.net
   - 08 fev 2013

Eu tmb achava que era viu, rsrs, vou reportar isso para a cupula!

Vlww!

0
|
0