none
Minha pagina.aspx de Login esta aceitando qualquer senha. RRS feed

  • Pergunta

  • Boa Tarde

    Minha pagina de Login.aspx esta aceitando qualquer senha. 

    Não esta mais vinculando com o banco de dados.

    Sendo que estava antes totalmente bloqueado e com segurança. 

    O que esta errado ?

    Segue meu codigo:

    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.Entity.Migrations.Model;
    using ControledeUsuarios;


    namespace ControledeUsuarios.Account
    {
        public partial class Login : Page
        {
            private ModelDataContext mdc;

            protected void Page_Load(object sender, EventArgs e)
            {
                //RegisterHyperLink.NavigateUrl = "Register";
                OpenAuthLogin.ReturnUrl = Request.QueryString["ReturnUrl"];

                var returnUrl = HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]);
                if (!String.IsNullOrEmpty(returnUrl))
                {
                    //RegisterHyperLink.NavigateUrl += "?ReturnUrl=" + returnUrl;
                    
                }
            }
            
            protected void Unnamed6_Click(object sender, EventArgs e)
            {
                
                mdc = new ModelDataContext();

                if (LoginUser.UserName != "")
                {
                    string a = LoginUser.UserName;
                    CADUSUARIOS CADUSUARIOS = mdc.CADUSUARIOS.First(use => use.UserName == a);
                    

                    if (CADUSUARIOS.Ativo == "S")
                    {
                        //HttpCookie cookieUsuario = new HttpCookie(CADUSUARIOS.USUARIO.ToString());

                        //Session["SessionCliente"] = "";
                        //Session["SessionClientes"] = CADUSUARIOS.CLIENTE.ToString();
                        //Session["SessionVendedor"] = CADUSUARIOS.VENDEDOR.ToString();
                        //Session["SessionProduto"] = CADUSUARIOS.PRODUTO.ToString();
                        //Session["SessionCategoria"] = CADUSUARIOS.CATEGORIA.ToString();
                        //Session["SessionRevista"] = CADUSUARIOS.REVISTA.ToString();
                        //Session["SessionMailing"] = CADUSUARIOS.MAILING.ToString();
                        //Session["SessionUsuarios"] = CADUSUARIOS.USUARIO.ToString();

                        //Usando Cookie
                        HttpCookie CookieCodCliente = new HttpCookie("CodCliente", "".ToString());
                        Response.SetCookie(CookieCodCliente);

                        HttpCookie CookieCliente = new HttpCookie("SessionCliente", "".ToString());
                        Response.SetCookie(CookieCliente);

                        HttpCookie CookieClientes = new HttpCookie("SessionClientes",CADUSUARIOS.CLIENTE.ToString());
                        Response.SetCookie(CookieClientes);

                        HttpCookie CookieVendedor = new HttpCookie("SessionVendedor", CADUSUARIOS.VENDEDOR.ToString());
                        Response.SetCookie(CookieVendedor);

                        HttpCookie CookieProduto = new HttpCookie("SessionProduto", CADUSUARIOS.PRODUTO.ToString());
                        Response.SetCookie(CookieProduto);

                        HttpCookie CookieCategoria = new HttpCookie("SessionCategoria", CADUSUARIOS.CATEGORIA.ToString());
                        Response.SetCookie(CookieCategoria);

                        HttpCookie CookieRevista = new HttpCookie("SessionRevista", CADUSUARIOS.REVISTA.ToString());
                        Response.SetCookie(CookieRevista);

                        HttpCookie CookieMailing = new HttpCookie("SessionMailing", CADUSUARIOS.MAILING.ToString());
                        Response.SetCookie(CookieMailing);

                        HttpCookie CookieUsuarios = new HttpCookie("SessionUsuarios", CADUSUARIOS.VENDEDOR.ToString());
                        Response.SetCookie(CookieUsuarios);

                        HttpCookie CookieUsuario = new HttpCookie("SessionUsuario", a.ToString());
                        Response.SetCookie(CookieUsuario);

                        HttpCookie CookieIVC = new HttpCookie("SessionIVC", CADUSUARIOS.IVC.ToString());
                        Response.SetCookie(CookieIVC);


                        if (CADUSUARIOS.CLIENTE.Trim() == "LEITURA" || CADUSUARIOS.CLIENTE == "ESCRITA")
                        {
                            Response.Redirect("~/Clientes.aspx?" + "Usuario=" + a);
                        }
                          else if (CADUSUARIOS.MAILING == "LEITURA" || CADUSUARIOS.MAILING == "ESCRITA")
                          {
                             Response.Redirect("~/Mailing.aspx?" + "Usuario=" + a);
                          }
                            else if (CADUSUARIOS.PRODUTO == "LEITURA" || CADUSUARIOS.PRODUTO == "ESCRITA")
                            {
                                Response.Redirect("~/Produto.aspx?" + "Usuario=" + a);
                            }
                            else if (CADUSUARIOS.VENDEDOR == "LEITURA" || CADUSUARIOS.VENDEDOR == "ESCRITA")
                            {
                                Response.Redirect("~/Vendedores.aspx?" + "Usuario=" + a);
                            }
                            else if (CADUSUARIOS.CATEGORIA == "LEITURA" || CADUSUARIOS.CATEGORIA == "ESCRITA")
                            {
                                Response.Redirect("~/Categorias.aspx?" + "Usuario=" + a);
                            }
                            else if (CADUSUARIOS.REVISTA == "LEITURA" || CADUSUARIOS.REVISTA == "ESCRITA")
                            {
                                Response.Redirect("~/Revistas.aspx?" + "Usuario=" + a);
                            }
                            else if (CADUSUARIOS.USUARIO == "LEITURA" || CADUSUARIOS.USUARIO == "ESCRITA")
                            {
                                Response.Redirect("~/Usuarios.aspx?" + "Usuario=" + a);
                            }
                    }
                   
                }

                
     

            }
        }
    }

    quarta-feira, 23 de novembro de 2016 18:20

Todas as Respostas

  • Olá,

    O que você está usando para autenticação no WebForms? Membership, Identity ou algo feito por você?

    Nesse código não tem nada que esteja validando senha.


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quarta-feira, 23 de novembro de 2016 18:23
  • Ola

    Estou usando o MemberShip do Visual Studio 2012. O qual estava funcionando. Mas agora parou.

    Segue meu codigo Login.aspx

    <%@ Page Title="Entrar" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Login.aspx.cs" 
        Inherits="ControledeUsuarios.Account.Login" %>
    <%@ Register Src="~/Account/OpenAuthProviders.ascx" TagPrefix="uc" TagName="OpenAuthProviders" %>

    <asp:Content runat="server" ID="BodyContent" ContentPlaceHolderID="MainContent">
        <hgroup class="title">
            <%--<h1><%: Title %>.</h1>--%>
        </hgroup>
        <section id="loginForm">
            <h2>Use sua conta para logar</h2>
            <asp:Login runat="server" ViewStateMode="Disabled" RenderOuterTable="false" ID="LoginUser">
                <LayoutTemplate>
                    <p class="validation-summary-errors">
                        <asp:Literal runat="server" ID="FailureText" />
                    </p>
                    <fieldset>
                        <legend>Formulário de Login</legend>
                        <ol>
                            <li>
                                <asp:Label runat="server" AssociatedControlID="UserName">nome de usuário</asp:Label>
                                <asp:TextBox runat="server" ID="UserName" />
                                <asp:RequiredFieldValidator runat="server" ControlToValidate="UserName" CssClass="field-validation-error" ErrorMessage="O campo do nome do usuário é necessário." />
                            </li>
                            <li>
                                <asp:Label runat="server" AssociatedControlID="Password">senha</asp:Label>
                                <asp:TextBox runat="server" ID="Password" TextMode="Password" />
                                <asp:RequiredFieldValidator runat="server" ControlToValidate="Password" CssClass="field-validation-error" ErrorMessage="O campo de senha é necessário." />
                            </li>
                            <li>
                                <asp:CheckBox runat="server" ID="RememberMe" />
                                <asp:Label runat="server" AssociatedControlID="RememberMe" CssClass="checkbox">Mantenha-me conectado</asp:Label>
                            </li>
                        </ol>
                        <asp:Button runat="server" CommandName="Login" Text="Entrar" OnClick="Unnamed6_Click" />
                    </fieldset>
                </LayoutTemplate>
            </asp:Login>
            <p>
               <%-- <asp:HyperLink runat="server" ID="RegisterHyperLink" ViewStateMode="Disabled">Registre</asp:HyperLink>
                Se você não tiver uma conta--%>
            </p>
        </section>

        <section id="socialLoginForm">
            
            <uc:OpenAuthProviders runat="server" ID="OpenAuthLogin" />
        </section>
    </asp:Content>

    quinta-feira, 24 de novembro de 2016 04:38
  • Ricardo, você fez alguma alteração no código recentemente?

    Como dica, tente deixar a propriedade ViewStateMode="Enabled" no formulário de Login.


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quinta-feira, 24 de novembro de 2016 10:06
  • Bom dia André

    Eu não mudei meu código. 

    Coloquei da forma que você postou. Porem não esta dando certo. 

    Aceita qualquer senha.

    fico no aguardo

    Obrigado

    quinta-feira, 24 de novembro de 2016 10:55
  • <asp:Login runat="server" ViewStateMode="Enabled" RenderOuterTable="false" ID="LoginUser">
                <LayoutTemplate>
                    <p class="validation-summary-errors">
                        <asp:Literal runat="server" ID="FailureText" />
                    </p>
                    <fieldset>
                        <legend>Formulário de Login</legend>
                        <ol>
                            <li>
                                <asp:Label runat="server" AssociatedControlID="UserName">nome de usuário</asp:Label>
                                <asp:TextBox runat="server" ID="UserName" />
                                <asp:RequiredFieldValidator runat="server" ControlToValidate="UserName" CssClass="field-validation-error" ErrorMessage="O campo do nome do usuário é necessário." />
                            </li>
                            <li>
                                <asp:Label runat="server" AssociatedControlID="Password">senha</asp:Label>
                                <asp:TextBox runat="server" ID="Password" TextMode="Password" />
                                <asp:RequiredFieldValidator runat="server" ControlToValidate="Password" CssClass="field-validation-error" ErrorMessage="O campo de senha é necessário." />
                            </li>
                            <li>
                                <asp:CheckBox runat="server" ID="RememberMe" />
                                <asp:Label runat="server" AssociatedControlID="RememberMe" CssClass="checkbox">Mantenha-me conectado</asp:Label>
                            </li>
                        </ol>
                        <asp:Button runat="server" CommandName="Login" Text="Entrar" OnClick="Unnamed6_Click" />
                    </fieldset>
                </LayoutTemplate>
            </asp:Login>
    quinta-feira, 24 de novembro de 2016 12:46
  • Seu Web.Config está configurado tudo corretamente? Não faz sentido se você não fez nada e parou de funcionar. Não foi alterado nada? Nem no banco de dados, nem na aplicação? Visual Studio?


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quinta-feira, 24 de novembro de 2016 13:20
  •   CADUSUARIOS CADUSUARIOS = mdc.CADUSUARIOS.First(use => use.UserName == a);

    Aqui não faltou a comparação com senha também?

      CADUSUARIOS CADUSUARIOS = mdc.CADUSUARIOS.First(use => use.UserName == a && use.UserSenha == senha);


    quinta-feira, 24 de novembro de 2016 13:29
  • Bom dia Rafael

    E como eu recupero a senha digitada para poder comparar ?

    O usuário eu estou recuperando assim:

    string a = LoginUser.UserName;

    Fico no aguardo.

    Obrigado.

    quinta-feira, 24 de novembro de 2016 13:46
  • Tentou Login.Password?

    Embora esteja verificando dessa forma a autenticação, mas o membership faz isso de forma automática para você, não entendi essa implementação que fez.

    Para ver como é a implementação padrão, basta criar um novo projeto e selecionar esse tipo de autenticação


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quinta-feira, 24 de novembro de 2016 14:00
  • Boa Tarde Pessoal

    Coloquei dessa forma:

    Porem esta dando erro.

    Erro de Servidor no Aplicativo '/'.

    A sequência não contém elementos

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

    Detalhes da Exceção: System.InvalidOperationException: A sequência não contém elementos

    Erro de Origem: 
    Linha 45:                 {
    Linha 46: 
    Linha 47:                     USERS USERS = mdc.USERS.First(CAD => CAD.LOGIN == a && CAD.SENHA == b);
    Linha 48: 
    Linha 49:                     if (USERS.LOGIN != "")

    Arquivo de Origem: c:\ARTSIM\SGSIM\ControledeUsuarios\Account\Login.aspx.cs    Linha: 47 

    Rastreamento de Pilha: 
    [InvalidOperationException: A sequência não contém elementos]
       System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) +1157
       System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) +118
       System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +342
       System.Data.Linq.Table`1.System.Linq.IQueryProvider.Execute(Expression expression) +58
       System.Linq.Queryable.First(IQueryable`1 source, Expression`1 predicate) +249
       ControledeUsuarios.Account.Login.Unnamed6_Click(Object sender, EventArgs e) in c:\ARTSIM\SGSIM\ControledeUsuarios\Account\Login.aspx.cs:47
       System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9712662
       System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +204
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1639
    


    Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.6.1586.0

    quinta-feira, 24 de novembro de 2016 16:10
  • André

    O código ficou assim:

     mdc = new ModelDataContext();
                

                if (LoginUser.UserName != "")
                {
                    string a = LoginUser.UserName;
                    string b = LoginUser.Password;

                   
                    CADUSUARIOS CADUSUARIOS = mdc.CADUSUARIOS.First(use => use.UserName == a);
                    

                    if (CADUSUARIOS.Ativo == "S")
                    {

                        USERS USERS = mdc.USERS.First(CAD => CAD.LOGIN == a && CAD.SENHA == b);

                        if (USERS.LOGIN != "")
                        {

                            //BREAK
                        }

    quinta-feira, 24 de novembro de 2016 16:16
  • A string b conseguiu pegar os valor do Password? Debugue para ter certeza.

    Caso não tenha pego, tente dessa forma:

    string b = (LoginUser.FindControl("Password") as TextBox).Text;


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quinta-feira, 24 de novembro de 2016 18:14
  • Boa Tarde

    A tabela estava errada. Agora coloquei a certa. 

    Porem esta dando outro erro no codigo.

                                                                       

      mdc = new ModelDataContext();

                if (LoginUser.UserName != "")
                {
                    string a = LoginUser.UserName;
                    string b = (LoginUser.FindControl("Password") as TextBox).Text;


                    CADUSUARIOS CADUSUARIOS = mdc.CADUSUARIOS.First(use => use.UserName == a);


                    if (CADUSUARIOS.Ativo == "S")
                    {

                        string c = CADUSUARIOS.UserId.ToString();

                        Membership Membership = mdc.Memberships.First(me => me.UserId == c && me.Password == b);

                        if (c != "")
                        {

                            //BREAK
                        }

    ERRO: 

    Error 2 Operator '==' cannot be applied to operands of type 'System.Guid' and 'string' C:\ARTSIM\SGSIM\ControledeUsuarios\Account\Login.aspx.cs 49 73 ControledeUsuarios

    CAMPO USERID = uniqueidentifier

    CAMPO PASSWORD = nvarchar(128)

    Podem me ajudar por favor.

    Obrigado

    quinta-feira, 24 de novembro de 2016 19:30
  • Você tem que fazer um Parse correto na sua variável c, faz assim:

    Guid c = Guid.Parse(CADUSUARIOS.UserId.ToString());


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    quinta-feira, 24 de novembro de 2016 19:39
  • Dessa forma que você colocou André não da mais erro 

    Porem eu não sei como verificar se tem ou não registro ?

    olhe meu codigo


                if (LoginUser.UserName != "")
                {
                    string a = LoginUser.UserName;
                    string b = (LoginUser.FindControl("Password") as TextBox).Text;
                    
                   
                    CADUSUARIOS CADUSUARIOS = mdc.CADUSUARIOS.First(use => use.UserName == a);
                    

                    if (CADUSUARIOS.Ativo == "S")
                    {

                        
                        Guid c = Guid.Parse(CADUSUARIOS.UserId.ToString());
                        
                        Membership Membership = mdc.Memberships.First(me => me.UserId == c && me.Password == b);

                        if (//Mas como eu verifico se tem registro ?)
                        {

                            //BREAK
                        }

    quinta-feira, 24 de novembro de 2016 19:57
  • Ricardo, a classe Membership do código é do namespace System.Web.Security? Porque acredito que não seja possível instânciar já que ela é static. Pode testar se existe usuário assim: 

    //O objeto tem que começar com letra minúscula aqui
    if(Membership.GetUser() != null)
    {
      //Faz algo
    }
    
    O GetUser retorna o usuário logado.


    Rodrigo Reis Ferreira
    Microsoft Certified

    sexta-feira, 25 de novembro de 2016 02:21
  • Bom dia Rodrigo

    Nesse meu cado o MemberShip é uma tabela.

    Então eu tenho que verificar de acordo com minha condição se existe registro ou não.

    Se não existir mostrar uma mensagem que usuario não existe e da um break na aplicação.

    Aguardo seu retorno.

    Obrigado.

    sexta-feira, 25 de novembro de 2016 11:06
  • Bom dia

    Neste caso ficaria assim:

    Membership Membership = mdc.Memberships.First(me => me.UserId == c && me.Password == b);

                        if (Se a condição acima não contem registros)
                        {
                          Mensagem ("Usuario incorreto")
                            break na aplicação
                        }

    sexta-feira, 25 de novembro de 2016 13:37
  • ola tudo bem , o seu codigo esta aceitando qualquer dado .... voce nao esta fazendo nenhuma verificacao quando alguem clica no botao ...

    ideal começar olhando pelo botao do clique e ver se os campos estao com valor ... depoiss vc verifica .

    a parte do "verifica" nao acontece no seu codigo

    abraços

    sexta-feira, 25 de novembro de 2016 13:53
  • Boa Tarde

    Eu preciso do codigo que verifique se essa query retorna dados ou não.

    Entendeu ?

    Membership Membership = mdc.Memberships.First(me => me.UserId == c && me.Password == b);

    Fico no aguardo.

    Obrigado

    sexta-feira, 25 de novembro de 2016 15:42
  • Acho que entendi o que você quer, tenta assim:

    bool existe = mdc.Memberships.Any(me => me.UserId == c && me.Password == b);
    
    //ou
    
    Membership membership = mdc.Memberships.First(me => me.UserId == c && me.Password == b);
    if(membership != null)
    {
      
    }
    



    Rodrigo Reis Ferreira
    Microsoft Certified

    sexta-feira, 25 de novembro de 2016 17:08
  • Bom dia

    Não deu certo Rodrigo

    Erro de Servidor no Aplicativo '/'.

    A sequência não contém elementos

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

    Detalhes da Exceção: System.InvalidOperationException: A sequência não contém elementos

    Erro de Origem: 
    Linha 48:                     Guid c = Guid.Parse(CADUSUARIOS.UserId.ToString());
    Linha 49:                     
    Linha 50:                     Membership Membership = mdc.Memberships.First(me => me.UserId == c && me.Password == b);
    Linha 51: 
    Linha 52:                     if (Membership != null)

    Arquivo de Origem: c:\ARTSIM\SGSIM\ControledeUsuarios\Account\Login.aspx.cs    Linha: 50 

    Rastreamento de Pilha: 
    [InvalidOperationException: A sequência não contém elementos]
       System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) +1157
       System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) +118
       System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +342
       System.Data.Linq.Table`1.System.Linq.IQueryProvider.Execute(Expression expression) +58
       System.Linq.Queryable.First(IQueryable`1 source, Expression`1 predicate) +249
       ControledeUsuarios.Account.Login.Unnamed6_Click(Object sender, EventArgs e) in c:\ARTSIM\SGSIM\ControledeUsuarios\Account\Login.aspx.cs:50
       System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9712662
       System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +204
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1639
    


    Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.6.1586.0

    segunda-feira, 28 de novembro de 2016 12:08
  • Ola Ricardo, pelo erro me parece que a lista de Memberships esta vazia, antes da linha 50 faz um teste:

    if(mdc.Memberships.Count > 0)
    {
    }

    Mas veja que isso também é um problema, a lista de Memberships não esta preenchida então não vai encontrar nenhum usuário. Não consegui localizar no seu código onde essa lista é preenchida, pode postar aqui por favor?


    Rodrigo Reis Ferreira
    Microsoft Certified

    segunda-feira, 28 de novembro de 2016 14:15
  • Boa Tarde

    O comando que você postou não esta sendo aceito pelo visual studio 2012

    Esse é meu codigo:

                                                                                                      

      protected void Unnamed6_Click(object sender, EventArgs e)
            {

                mdc = new ModelDataContext();

                if (LoginUser.UserName != "")
                {
                    string a = LoginUser.UserName;
                    string b = (LoginUser.FindControl("Password") as TextBox).Text;


                    CADUSUARIOS CADUSUARIOS = mdc.CADUSUARIOS.First(use => use.UserName == a);


                    if (CADUSUARIOS.Ativo == "S")
                    {


                        Guid c = Guid.Parse(CADUSUARIOS.UserId.ToString());

                        if (mdc.Memberships.Count > 0)
                        {
                            Membership Membership = mdc.Memberships.First(me => me.UserId == c && me.Password == b);

                            if (Membership != null)
                            {

                                //BREAK
                            }
                        }

    Erro: 

    Error 2 Operator '>' cannot be applied to operands of type 'method group' and 'int' C:\ARTSIM\SGSIM\ControledeUsuarios\Account\Login.aspx.cs 50 25 ControledeUsuarios

    segunda-feira, 28 de novembro de 2016 15:47
  • Ricardo,

    Seguinte, antes de mais nada renomeie essa sua variável Membership, você está colocando ela com o mesmo nome da Classe.

    Deixa o código como antes e tenta fazer assim:

    Membership m = mdc.Memberships.First(me => me.UserId == c && me.Password == b);
    
    if (m != null)
    {
        //BREAK
    }


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 28 de novembro de 2016 15:51
  • André

    Coloquei da forma que você postou porem não deu resultado.

    Erro de Servidor no Aplicativo '/'.

    A sequência não contém elementos

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

    Detalhes da Exceção: System.InvalidOperationException: A sequência não contém elementos

    Erro de Origem: 
    Linha 48:                     Guid c = Guid.Parse(CADUSUARIOS.UserId.ToString());
    Linha 49: 
    Linha 50:                     Membership m = mdc.Memberships.First(me => me.UserId == c && me.Password == b);
    Linha 51: 
    Linha 52:                     if (m != null)

    Arquivo de Origem: c:\ARTSIM\SGSIM\ControledeUsuarios\Account\Login.aspx.cs    Linha: 50 

    Rastreamento de Pilha: 
    [InvalidOperationException: A sequência não contém elementos]
       System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) +1157
       System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) +118
       System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +342
       System.Data.Linq.Table`1.System.Linq.IQueryProvider.Execute(Expression expression) +58
       System.Linq.Queryable.First(IQueryable`1 source, Expression`1 predicate) +249
       ControledeUsuarios.Account.Login.Unnamed6_Click(Object sender, EventArgs e) in c:\ARTSIM\SGSIM\ControledeUsuarios\Account\Login.aspx.cs:50
       System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9712662
       System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +204
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1639
    


    Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.6.1586.0

    segunda-feira, 28 de novembro de 2016 17:55
  • Acredito que o problema esteja nesse seu mdc, tenta dessa forma:

    if (mdc.Memberships != null && mdc.Memberships.Count() > 0)
    {
         Membership m = mdc.Memberships.First(me => me.UserId == c && me.Password == b);
        if (m != null)
        {
           //BREAK
        }
    }
    


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    André Secco
    Microsoft MSP & MSDN Tech Advisor
    Blog: http://andresecco.com.br
    GitHub: http://github.com/andreluizsecco
    Twitter: @andre_secco

    segunda-feira, 28 de novembro de 2016 18:09
  • Boa Tarde André

    Coloquei da forma que você postou acima porem não deu certo.

    Erro de Servidor no Aplicativo '/'.

    A sequência não contém elementos

    Descrição: Ocorreu uma exceção sem tratamento durante a execução da atual solicitação da Web. Examine o rastreamento de pilha para obter mais informações sobre o erro e onde foi originado no código. 

    Detalhes da Exceção: System.InvalidOperationException: A sequência não contém elementos

    Erro de Origem: 
    Linha 50:                     if (mdc.Memberships != null && mdc.Memberships.Count() > 0)
    Linha 51:                     {
    Linha 52:                         Membership m = mdc.Memberships.First(me => me.UserId == c && me.Password == b);
    Linha 53:                         if (m != null)
    Linha 54:                         {

    Arquivo de Origem: c:\ARTSIM\SGSIM\ControledeUsuarios\Account\Login.aspx.cs    Linha: 52 

    Rastreamento de Pilha: 
    [InvalidOperationException: A sequência não contém elementos]
       System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) +1157
       System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) +118
       System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +342
       System.Data.Linq.Table`1.System.Linq.IQueryProvider.Execute(Expression expression) +58
       System.Linq.Queryable.First(IQueryable`1 source, Expression`1 predicate) +249
       ControledeUsuarios.Account.Login.Unnamed6_Click(Object sender, EventArgs e) in c:\ARTSIM\SGSIM\ControledeUsuarios\Account\Login.aspx.cs:52
       System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9712662
       System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +204
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +12
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +15
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
       System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1639
    


    Informações sobre a Versão: Microsoft .NET Framework Versão:4.0.30319; Versão do ASP.NET:4.6.1586.0

    segunda-feira, 28 de novembro de 2016 18:17
  • mude mdc.Memberships.First para

    mdc.Memberships.FirstOrDefault

    First vai dar erro se sua expressao me => me.UserId == c && me.Password == b resulte em 0 objetos

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    segunda-feira, 28 de novembro de 2016 18:36
    Moderador
  • Boa Tarde Pessoal

    Coloquei da forma que o Willian postou e não deu mais erro.

    Porem não esta entrando na minha condição.

    Deveria entrar já que o IserId e a senha existem.

    Mas lembrando que a senha esta em formato criptografado e eu estou pegando em formato digitado.

    Eu creio que seja ai o problema.

    Segue a tabela a qual estou pesquisando.

    Aguardo retorno.

    Obrigado

    segunda-feira, 28 de novembro de 2016 19:26
  • Nao vai entrar, pois voce o criterio nao é respeitado.

    Creio que voce nao esteja criptografando o login e a  senha na hora de comparar. a comparaçao:

    me => me.UserId == c && me.Password == b 

    sempre vai retornar 0

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    segunda-feira, 28 de novembro de 2016 19:48
    Moderador
  • Boa Tarde

    A senha aparece para o usuario criptografada. Porem pra mim aparece normal.

    E eu não sei como comparar dessa forma.

    podem me ajudar por favor.

    Obrigado.

    terça-feira, 29 de novembro de 2016 15:18
  • Neste caso, comece analizando o que a Coleçao membership de retorna.

    coloque este codigo antes do "if (mdc.Memberships != null && mdc.Memberships.Count() > 0)"

     Debug.WriteLine("entrada: {0} - {1}",c ,b );//imprime suas variaveis de pesquisa

    foreach (Membership m in mdc.Memberships) { Debug.WriteLine("{0} - {1}",m.UserId ,m.Password );//imprime o conteudo do memebership }


    o resultado aparece na janela OutPut do visual studio.

    Se possivel, poste alguns dos resultados aqui, principalmente as  5 primeiras linhas.

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    terça-feira, 29 de novembro de 2016 15:33
    Moderador
  • Boa Tarde

    As minhas variaveis de pesquisas retornam

    c = dfbccb9c-f744-4371-82eb-ccb281aa359f

    b = 65280984

    Neste caso a variavel c esta de acordo com o banco de dados. Ja a variavel password não esta pois no banco grava criptografado.

    Porem eu não sei como mudar isso

    Alguem pode me ajudar por favor

    terça-feira, 29 de novembro de 2016 19:56
  • E as outras? o que retorna a coleçao MemberShip... voce adicionou o código que eu sugeri?

    Sem isso , nao dá pra saber como construir a expressao de comparaçao.

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------



    terça-feira, 29 de novembro de 2016 20:11
    Moderador
  • Bom dia Willian

    Creio que não esta dando certo porque a expressão de comparação não bate com os dados do campo password.

    Já que ele grava conforme imagem acima no banco de dados sql server 2014 em outro formato diferente do que o usuario digitou.

    Expero que tenham entendido.

    Fico no aguardo.

    Obrigado.

    quarta-feira, 30 de novembro de 2016 10:46
  • Por isso eu preciso ver o que sua coleçao membership contem..voce adicionou o codigo que eu sugeri? pode postar o resultado?

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------


    quarta-feira, 30 de novembro de 2016 13:05
    Moderador
  • Bom dia

    Segue a minha tabela MemberShip

    segunda-feira, 5 de dezembro de 2016 10:46
  • Eu nao quero a tabela membership... ela é inutil para a minha analise.. eu preciso que voce me de os resultados do codigo que eu sugeri.

    Debug.WriteLine("entrada: {0} - {1}",c ,b );//imprime suas variaveis de pesquisa
    foreach (Membership m in mdc.Memberships)
    {
        Debug.WriteLine("{0} - {1}",m.UserId ,m.Password );//imprime o conteudo do memebership
    }

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    segunda-feira, 5 de dezembro de 2016 10:52
    Moderador
  • Boa Tarde

    Em que parte do meu código eu coloco seu Debug ??

     protected void Unnamed6_Click(object sender, EventArgs e)
            {
                
                mdc = new ModelDataContext();

                if (LoginUser.UserName != "")
                {
                    string a = LoginUser.UserName;
                    string b = (LoginUser.FindControl("Password") as TextBox).Text;
                    
                   
                    CADUSUARIOS CADUSUARIOS = mdc.CADUSUARIOS.First(use => use.UserName == a);
                    

                    if (CADUSUARIOS.Ativo == "S")
                    {

                        
                        Guid c = Guid.Parse(CADUSUARIOS.UserId.ToString());

                        if (mdc.Memberships != null && mdc.Memberships.Count() > 0)
                        {
                            Membership m = mdc.Memberships.FirstOrDefault(me => me.UserId == c && me.Password == b);
                            if (m != null)
                            {

                                //Usando Cookie
                                HttpCookie CookieCodCliente = new HttpCookie("CodCliente", "".ToString());
                                Response.SetCookie(CookieCodCliente);

                                HttpCookie CookieCliente = new HttpCookie("SessionCliente", "".ToString());
                                Response.SetCookie(CookieCliente);

                                HttpCookie CookieClientes = new HttpCookie("SessionClientes", CADUSUARIOS.CLIENTE.ToString());
                                Response.SetCookie(CookieClientes);

                                HttpCookie CookieVendedor = new HttpCookie("SessionVendedor", CADUSUARIOS.VENDEDOR.ToString());
                                Response.SetCookie(CookieVendedor);

                                HttpCookie CookieProduto = new HttpCookie("SessionProduto", CADUSUARIOS.PRODUTO.ToString());
                                Response.SetCookie(CookieProduto);

                                HttpCookie CookieCategoria = new HttpCookie("SessionCategoria", CADUSUARIOS.CATEGORIA.ToString());
                                Response.SetCookie(CookieCategoria);

                                HttpCookie CookieRevista = new HttpCookie("SessionRevista", CADUSUARIOS.REVISTA.ToString());
                                Response.SetCookie(CookieRevista);

                                HttpCookie CookieMailing = new HttpCookie("SessionMailing", CADUSUARIOS.MAILING.ToString());
                                Response.SetCookie(CookieMailing);

                                HttpCookie CookieUsuarios = new HttpCookie("SessionUsuarios", CADUSUARIOS.VENDEDOR.ToString());
                                Response.SetCookie(CookieUsuarios);

                                HttpCookie CookieUsuario = new HttpCookie("SessionUsuario", a.ToString());
                                Response.SetCookie(CookieUsuario);

                                HttpCookie CookieIVC = new HttpCookie("SessionIVC", CADUSUARIOS.IVC.ToString());
                                Response.SetCookie(CookieIVC);


                                if (CADUSUARIOS.CLIENTE.Trim() == "LEITURA" || CADUSUARIOS.CLIENTE == "ESCRITA")
                                {
                                    Response.Redirect("~/Clientes.aspx?" + "Usuario=" + a);
                                }
                                else if (CADUSUARIOS.MAILING == "LEITURA" || CADUSUARIOS.MAILING == "ESCRITA")
                                {
                                    Response.Redirect("~/Mailing.aspx?" + "Usuario=" + a);
                                }
                                else if (CADUSUARIOS.PRODUTO == "LEITURA" || CADUSUARIOS.PRODUTO == "ESCRITA")
                                {
                                    Response.Redirect("~/Produto.aspx?" + "Usuario=" + a);
                                }
                                else if (CADUSUARIOS.VENDEDOR == "LEITURA" || CADUSUARIOS.VENDEDOR == "ESCRITA")
                                {
                                    Response.Redirect("~/Vendedores.aspx?" + "Usuario=" + a);
                                }
                                else if (CADUSUARIOS.CATEGORIA == "LEITURA" || CADUSUARIOS.CATEGORIA == "ESCRITA")
                                {
                                    Response.Redirect("~/Categorias.aspx?" + "Usuario=" + a);
                                }
                                else if (CADUSUARIOS.REVISTA == "LEITURA" || CADUSUARIOS.REVISTA == "ESCRITA")
                                {
                                    Response.Redirect("~/Revistas.aspx?" + "Usuario=" + a);
                                }
                                else if (CADUSUARIOS.USUARIO == "LEITURA" || CADUSUARIOS.USUARIO == "ESCRITA")
                                {
                                    Response.Redirect("~/Usuarios.aspx?" + "Usuario=" + a);
                                }




                            }
                        }

                       

                        
                    }
                   
                }

                
     

            }

    segunda-feira, 5 de dezembro de 2016 16:06
  • desta forma:

    Membership m = mdc.Memberships.FirstOrDefault(me => me.UserId == c && me.Password == b);
    
    //coloque o codigo aqui - o resultado aparece na janela output
    
    if (m != null)

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    segunda-feira, 5 de dezembro de 2016 16:45
    Moderador
  • Boa Tarde Willian

    Esta dando esse erro:

    terça-feira, 6 de dezembro de 2016 18:14
  • tem que adicionar "using System.Diagnostics;" 

    Att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    terça-feira, 6 de dezembro de 2016 19:17
    Moderador
  • Boa Tarde Willian

    Agora o erro é outro.

    quarta-feira, 7 de dezembro de 2016 18:02
  • Agora foi falha minha.. eu pensei que a variavel m do foreach seria em un novo escopo. simplesmente faça:

    Debug.WriteLine("entrada: {0} - {1}",c ,b );//imprime suas variaveis de pesquisa
    foreach (Membership m1 in mdc.Memberships)
    {
        Debug.WriteLine("{0} - {1}",m1.UserId ,m1.Password );//imprime o conteudo do memebership
    }

    att


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quarta-feira, 7 de dezembro de 2016 18:51
    Moderador
  • Use equals para validar usuário e senha
    terça-feira, 25 de abril de 2017 03:06