1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Login para uma Agenda (ASP.NET / VB.NET)

Discussão em 'Web Development' iniciada por peter alien, 6 de Janeiro de 2008. (Respostas: 25; Visualizações: 4028)

  1. peter alien

    peter alien Power Member

    Estava a tentar criar uma Agenda online c/ Login, mas por agora deparei-me com dois problemas:

    1) Depois de fazer o Login e ir para a página que irá possuir a Agenda, o user pode sempre voltar atrás clicando no botão do Back do IE, assim como, se pode logo colocar o endereço correspondente à página que contem a agenda, evitando assim a página inicial de login.


    2) Queria na página Agenda.aspx, fazer inicialmente um check ao valor do "Login1.UserName" (contem o nome do user) de modo a verificar se não está vazio, porque assim veria que o user entrou na agenda fazendo o login, e só nessas condições a agenda seria disponibilizada.
    O problema é, como é que eu consigo recuperar um valor entrado na página Login.aspx de modo a poder reutiliza-lo na página Agenda.aspx?




    Os códigos da páginas Login.aspx e Agenda.aspx são respectivamente estes:




    <%@ Page Language="VB" %>
    <script runat="server">
    Protected Sub Login1_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs)
    If Login1.UserName = "Pedro" And Login1.Password = "tudook" Then
    e.Authenticated = True
    Else
    e.Authenticated = False
    End If
    End Sub
    </script>
    <html>
    <head></head>
    <body style="font-family:Verdana, Arial, Helvetica, sans-serif">
    <br><br><br>
    <center>
    <form id="Form1" runat="server">
    <asp:Login id="Login1" runat="server" backcolor="#EFF3FB" bordercolor="#B5C7DE" borderpadding="4" borderstyle="Solid" borderwidth="1px" font-names="Verdana" font-size="0.8em"
    forecolor="#333333" OnAuthenticate="Login1_Authenticate" DisplayRememberMe="False" RememberMeText="" TitleText="Acesso" UserNameLabelText="Nome:" DestinationPageUrl="Agenda.aspx" FailureText="Os Dados introduzidos são inválidos !" Height="84px" LoginButtonText="Entrar" Width="235px" EnableViewState="False" UserNameRequiredErrorMessage="Username is required.">
    <TitleTextStyle BackColor="#507CD1" ForeColor="White" Font-Size="0.9em" Font-Bold="True"></TitleTextStyle>
    <InstructionTextStyle ForeColor="Black" Font-Italic="True"></InstructionTextStyle>
    <TextBoxStyle Font-Size="0.8em"></TextBoxStyle>
    <LoginButtonStyle BackColor="White" BorderStyle="Solid" ForeColor="#284E98" BorderWidth="1px" BorderColor="#507CD1" Font-Size="0.8em" Font-Names="Verdana"></LoginButtonStyle>
    <FailureTextStyle Font-Size="0.8em" Font-Bold="False" Font-Italic="False" />
    <ValidatorTextStyle ForeColor="Orange" />
    </asp:login>
    </form>
    </center>
    </body>
    </html>





    e




    <%@ Page Language="VB" %>

    <script runat="server">
    Protected Sub TextBox1_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    TextBox1.Text = Request.Form("Login1.UserName")
    End Sub
    </script>

    <html>
    <body>
    <form runat=server>
    <asp:TextBox ID="TextBox1" runat="server" OnLoad="TextBox1_Load"></asp:TextBox>
    </form>
    AGENDA ...
    ...
    </body>
    </html>







    Obrigadão
     
    Última edição: 6 de Janeiro de 2008
  2. Khrono

    Khrono Power Member

    Penso que assim resulte, é a única ideia que tenho neste momento e para começar não deve haver problema, mas existem maneiras mais seguras de fazer esse controlo (e mais avançadas).

    cumps,

    Khrono
     
    Última edição: 8 de Janeiro de 2008
  3. peter alien

    peter alien Power Member

    Podem-me dar umas dicas sobre uma maneira mais segura (ou avançada :) ) de se fazer isto?


    Obrigadão
     
  4. pascasso

    pascasso Power Member

    boas,

    cookie.
     
  5. peter alien

    peter alien Power Member

    Já ouvi falar dos cookies e sei para que servem, mas em termos de programá-los estou completamente em branco :(

    Podem-me dar umas dicas de como criar um?


    Já agora em relação ao código acima descrito, ele não é seguro quanto baste?



    Obrigado
     
  6. pascasso

    pascasso Power Member

    boas,

    se queres que te diga acho essa maneira mais segura. Ainda queres na mesma como fazer cookies?
     
  7. Khrono

    Khrono Power Member

    Existe ainda outra forma mas envolve mexer em IIS, web.config e memberships e afins mas nem eu sei ao certo como meter tudo a trabalhar, já que ficas com a maior parte da informação oculta e em base de dados.

    no teu caso, para melhorares a segurança, seria transpor todo o codigo vb para o code behind da pagina .aspx porque pelo que percebi, tu tens todo o codigo na pagina .aspx e penso que depois ao acederes à pagina, consegues ver o codigo vb criado e consequentemente o login que está lá escrito.

    se tiveres com ideias de meter mais users a aceder a agenda, aconselho usares bases de dados ( Sql server express, free e facil de ligar ao programa), para evitares os logins escritos no codigo.

    em relação aos cookies também tenho conhecimento dessa possibilidade mas desconheço o método de criar já que muitos sites não o aconselham.

    cumps
     
  8. pascasso

    pascasso Power Member

    boas,

    isso não é verdade. O código é compilado e é formado o HTML. VB é uma linguagem server-side só quem está do lado do servidor é que consegue ver o código.
     
  9. Armadillo

    Armadillo Folding Member


    Isso nao acontece porque ao executar um aspx, apenas é devolvido codigo html, logo nao há hipotese de ver as passwords (a não ser que se hacke o ficheiro para read e nao para executar), penso eu de que..
     
  10. peter alien

    peter alien Power Member

    bem... por mim acho a ideia do code Behind bastante interessante, mas digam-me uma coisa como o código está há hipotese de alguem conseguir "saltar" por cima do login?
     
  11. pascasso

    pascasso Power Member

  12. Khrono

    Khrono Power Member

    desconhecia que ao transformar em html, o codigo vb ficasse totalmente oculto e no servidor, foi algo que nunca tinha experimentado já que por norma, eu coloco o codigo vb em code-behind, apenas o javascript (se for pouco codigo) fica no aspx.
     
  13. Armadillo

    Armadillo Folding Member

    mas deves continuar a fazer assim. o iis devolve conteudo html para poderes ver as paginas, assim como o apache faz para o php and so on...

    Se tu fores a ver o source de uma pagina da techzone, verificas que nao ha codigo php, apenas html e jscript, ou seja, conteudo que o browsers conseguem interpretar, apesar de, no endereço, veres lá um ".php".
     
  14. fil79

    fil79 Power Member

    Por isso se chamam linguagens de servidor!
     
  15. peter alien

    peter alien Power Member

    Tirem-me lá duas duvidas:

    1) qualquer servidor processa sites que utilizem Code-Behind?


    2) Neste exemplo, o Visual Studio 2005, dá-me um erro na linha do "Dim", dizendo que a variavel Z declarada é local e não pode ser usada!???
    Então não se podem declarar variaveis dentro de um Procedimento existente numa página aspx?


    Código:
    <%@ Page Language="VB" %>
     <script runat="server">
      Protected Sub Login1_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs)
       Dim Z as string
       If Login1.UserName = "Pedro" And Login1.Password = "tudook" Then
        Session("User") = Login1.UserName 
        e.Authenticated = True
        Session("auth") = e.Authenticated 
       Else
        Session("User") = ""
        e.Authenticated = False
        Session("auth") = e.Authenticated 
       End If
      ...
      End Sub
     </script>
    <html>
     <head></head>
     <body style="font-family:Verdana, Arial, Helvetica, sans-serif">
      <br><br><br>
      <center>
      <form id="Form1" runat="server">
       <asp:Login id="Login1" runat="server" backcolor="#EFF3FB" bordercolor="#B5C7DE" borderpadding="4" borderstyle="Solid" borderwidth="1px" font-names="Verdana" font-size="0.8em"
        forecolor="#333333" OnAuthenticate="Login1_Authenticate" DisplayRememberMe="False" RememberMeText="" TitleText="Acesso" UserNameLabelText="Nome:" DestinationPageUrl="Agenda.aspx" FailureText="Os Dados introduzidos são inválidos !" Height="84px" LoginButtonText="Entrar" Width="235px" EnableViewState="False" UserNameRequiredErrorMessage="Username is required.">
        <TitleTextStyle BackColor="#507CD1" ForeColor="White" Font-Size="0.9em" Font-Bold="True"></TitleTextStyle>
        <InstructionTextStyle ForeColor="Black" Font-Italic="True"></InstructionTextStyle>
        <TextBoxStyle Font-Size="0.8em"></TextBoxStyle>
        <LoginButtonStyle BackColor="White" BorderStyle="Solid" ForeColor="#284E98" BorderWidth="1px" BorderColor="#507CD1" Font-Size="0.8em" Font-Names="Verdana"></LoginButtonStyle>
        <FailureTextStyle Font-Size="0.8em" Font-Bold="False" Font-Italic="False" />
        <ValidatorTextStyle ForeColor="Orange" />
       </asp:login>
      </form>
      </center>
     </body>
    </html>
     
    Última edição pelo moderador: 11 de Janeiro de 2008
  16. Khrono

    Khrono Power Member

    podes desde que uses, ai o erro que te dá está relacionado com o facto de não usares a variavel no procedimento.
     
  17. peter alien

    peter alien Power Member

    pois é :)... ainda não tinha usado a versão 2005, só a 2003 :(

    achei que estava a dar erro por outra razão... e já me estava a passar!


    upsss... lá passei por tótó :o sorry...


    E em relação ao Code-Behind... basta instalar o quê no Servidor para ele correr? Só o .NET Framework?
     
  18. Khrono

    Khrono Power Member

    é normal que aconteça situações em que a descrição do erro não é a correcta e sejamos induzidos em erro, também já passei por essa situação.

    para o servidor apenas precisas do IIS e do .NET framework mas isso precisas sempre quer uses code-behind ou não.
     
  19. peter alien

    peter alien Power Member

    Obrigadão :D

    depois quando um user estiver na Agenda e quiser terminar a sessão, como faço?

    Crio um link na Agenda a dizer por exemplo "Logout". Mas e em relação ao código como faço para encerrar a sessão em segurança?
     
    Última edição: 11 de Janeiro de 2008
  20. pascasso

    pascasso Power Member

    boas,

    Código:
    e.Authenticated = False
    response.redirect("por aki o endereço")
     

Partilhar esta Página