jrcesar 0 Denunciar post Postado Abril 3, 2009 Tudo bem? É o seguinte, estou me baseando neste artigo do Dennes Torres http://www.bufaloinfo.com.br/artigos/artigo02032007.asp , mas estou desenvolvendo em C# e usando o VS2008. Estou com um pouco de dificuldade na conversão de código e algumas duvidas em relação ao código. neste caso esta me mostrando um erro que contem argumentos invalidos. public override MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status) { MembershipUser user; //nesta linha user = base.CreateUser(username, password, email, passwordQuestion, passwordAnswer, isApproved, providerUserKey, status); user.Comment = "Trocar"; UpdateUser(user); return (user); } aqui estou com problema de conversão de vb para c# primeiro não consegui achar a referencia: using System.Web.HttpContext; segundo seria a conversão do codigo, aqui vai o código em vb. Public Sub Dispose() Implements System.Web.IHttpModule.Dispose End Sub Public Sub Init(ByVal context As System.Web.HttpApplication) Implements System.Web.IHttpModule.Init AddHandler context.PostAuthenticateRequest, AddressOf autenticou End Sub Sub autenticou(ByVal sender As Object, ByVal e As EventArgs) With Current If .User.Identity.IsAuthenticated Then Dim user As MembershipUser user = Membership.GetUser() If user.Comment = "Trocar" Then If .Request.Url.ToString.IndexOf("TrocarSenha") = -1 Then .Response.Redirect("TrocarSenha.aspx?URL=" & .Server.UrlEncode(.Request.Url.ToString)) .Response.End() End If End If End If End With End Sub Só que eu ja uso um provider para trabalhar com o membership, então no web.config eu teria dois providers. Como saberei qual usar? O que eu uso como padrão é o que é nativo, e o segundo é do artigo do Dennes Torres. <membership defaultProvider="SqlMembershipProvider"> <providers> <clear/> <add name="SqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="connstrBDSISTEMAWEB" applicationName="SISTEMAWEB" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" passwordFormat="Hashed" minRequiredNonalphanumericCharacters="1" minRequiredPasswordLength="8"/> <add name="MeuProvider" type="clNovoMembership.MembershipTrocaSenha" connectionStringName="connstrBDSISTEMAWEB" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" applicationName="SISTEMAWEB" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="8" minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/> </providers> </membership> Compartilhar este post Link para o post Compartilhar em outros sites
Oenning 0 Denunciar post Postado Abril 4, 2009 O erro do primeiro código que no using? using System.Web.HttpContext; HttpContext é uma classe, não tem como dar using nela. Sobre a conversão, tente assim: public void Init(HttpApplication context) { context.PostAuthenticateRequest += new EventHandler(autenticou); } public void autenticou(object sender, EventArgs e) { if (HttpContext.Current.User.Identity.IsAuthenticated) { MembershipUser user = Membership.GetUser(); if (user.Comment == "Trocar") { if (HttpContext.Current.Request.Url.ToString().IndexOf("TrocarSenha") == -1) { HttpContext.Current.Response.Redirect("TrocarSenha.aspx?URL=" + HttpContext.Current.Server.UrlEncode(HttpContext.Current.Request.Url.ToString())); HttpContext.Current.Response.End(); } } } } Compartilhar este post Link para o post Compartilhar em outros sites
jrcesar 0 Denunciar post Postado Abril 6, 2009 O erro do primeiro código que no using? using System.Web.HttpContext; HttpContext é uma classe, não tem como dar using nela. Sobre a conversão, tente assim: public void Init(HttpApplication context) { context.PostAuthenticateRequest += new EventHandler(autenticou); } public void autenticou(object sender, EventArgs e) { if (HttpContext.Current.User.Identity.IsAuthenticated) { MembershipUser user = Membership.GetUser(); if (user.Comment == "Trocar") { if (HttpContext.Current.Request.Url.ToString().IndexOf("TrocarSenha") == -1) { HttpContext.Current.Response.Redirect("TrocarSenha.aspx?URL=" + HttpContext.Current.Server.UrlEncode(HttpContext.Current.Request.Url.ToString())); HttpContext.Current.Response.End(); } } } } Olá obrigado por me ajudar.Quero que no momento que o usuario faça o primeiro login , ele tenha que fazer a troca de senha. Para isso estou me baseando neste artigo do Dennes Torres http://www.bufaloinfo.com.br/artigos/artigo02032007.asp Com relação a os providers, então eu terei que implementar toda a classe membership para que eu possa utiliza-la? No artigo do Dennes Torres, ele implementa três metodos, que são: CreateUser e dois metodos ChangePassword da classe Membership. Você teria algum exemplo de implementação dos outros metodos para que eu tivesse alguns exemplos? Com relação a troca de senha no momento em que o usuario se logar, você teria alguma solução alternativa para este caso? Compartilhar este post Link para o post Compartilhar em outros sites
Oenning 0 Denunciar post Postado Abril 6, 2009 Se você customizou o Membership, você só vai precisar do provider customizado. Por não ser muito fã de Membership (sempre implementei meus próprios mecanismos de autenticação) eu não consigo ir muito além disso. Fico te devendo essa. Compartilhar este post Link para o post Compartilhar em outros sites