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

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:
<%@ 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
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>





e




<%@ Page Language="VB" %>

<script runat="server">
Protected Sub TextBox1_Load(ByVal sender As Object, ByVal e As System.EventArgs)
if Session("auth") != True then
Mensagem de erro
response.redirect(nome da pagina de login) (ex: "~/Default.aspx")
end if
TextBox1.Text = Session("User")
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

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:
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
 
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
 
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.

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.
 
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.
cumps


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..
 
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?
 
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.
 
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.
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".
 
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:
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?
 
é 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.
 
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:
Back
Topo