Usando a session por uma classe auxiliar.
07/02/2013
0
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?
Caio Uechi
Posts
07/02/2013
Caio Uechi
"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 =(
07/02/2013
Robson Alves
<%@ Page enableSessionState = "true" %>
07/02/2013
Caio Uechi
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!!
07/02/2013
Caio Uechi
Keep making questions on devmedia, rS!
08/02/2013
Robson Alves
Entendendo que o assunto está resolvido!
Tranco o Tópico!
Abraços!
08/02/2013
Caio Uechi
fiz só um teste.
08/02/2013
Caio Uechi
fiz só um teste.
08/02/2013
Robson Alves
Vlww!
Clique aqui para fazer login e interagir na Comunidade :)