Fórum Uso do Membership.GetUser com o Login Control #7562
14/07/2009
0
Já utilizo o comando "Membership.GetUser" abaixo normalmente em outras telas, com o VS 2008.
Entretanto estou precisando utilizá-lo numa tela com o ASP.NET Login Control.
E ao utilizálo nessa tela da a mensagem de erro abaixo "Object reference not set to an instance of an object". Grato
Sidney ---------------------------------------------- using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls; public partial class login : System.Web.UI.Page
{
MembershipUser u;
protected void Page_Load(object sender, EventArgs e)
{ }
protected void LoginButton_Click(object sender, EventArgs e)
{
u = Membership.GetUser(User.Identity.Name);
Session.RemoveAll();
Session["%UsuarioNome"] = u.UserName;
}
} ---------------------------------------------- Server Error in '/tpm2.0' Application.
-------------------------------------------------------------------------------- Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.NullReferenceException: Object reference not set to an instance of an object. Source Error:
Line 21: u = Membership.GetUser(User.Identity.Name);
Line 22: Session.RemoveAll();
Line 23: Session["%UsuarioNome"] = u.UserName;
Line 24: }
Line 25: }
Source File: c:\Desenvolvimento VS2008\tpm\tpm2.0\login.aspx.cs Line: 23 Stack Trace:
[NullReferenceException: Object reference not set to an instance of an object.]
login.LoginButton_Click(Object sender, EventArgs e) in c:\Desenvolvimento VS2008\tpm\tpm2.0\login.aspx.cs:23
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +105
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +107
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +7
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +11
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1746
Sidney Mendonça/
Curtir tópico
+ 0Posts
14/07/2009
Fabio Mans
User.Identity.Name //Aqui ainda não existe o usuário
protected void LoginButton_Click(object sender, EventArgs e)
{
u = Membership.GetUser(User.Identity.Name);
Session.RemoveAll();
Session["%UsuarioNome"] = u.UserName;
}
=============================================================
Faça o seguinte procure pelo evento LoggingIn do controle Login
E implemente o seguinte método
protected void Login1_LoggingIn(object sender, LoginCancelEventArgs e)
{
MembershipUser user = Membership.GetUser(Login1.UserName);
if (user!= null)
{
Session.RemoveAll();
Session["%UsuarioNome"] = user.UserName;
e.Authenticated = true;
}
}
Gostei + 0
14/07/2009
Sidney Mendonça/
Gostei + 0
14/07/2009
Fabio Mans
Não é necessário o uso da Session que vc criou.
Então faz o seguinte no lugar da linha que você removeu.
FormsAuthentication.RedirectFromLoginPage(u.UserName, false);
Quando você precisar do nome dele faz o seguinte.
string nome = HttpContext.Current.User.Identity.Name;
Para saber se o usuário está autenticado faça o seguinte.
if (HttpContext.Current.User.Identity.IsAuthenticated)
{
Se sim faz alguma coisa
}
Assista 5 aulas que criei sobre autenticação.
Abraços.
Gostei + 0
16/07/2009
Devmedia
a resposta do consultor foi suficiente? Podemos encerrar o chamado?
Gostei + 0
18/07/2009
Sidney Mendonça/
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)