Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Sistema de Gestión de Login y Usuarios en ASP
Sistema de Gestión de Login y Usuarios en ASP
0 y
VB.net
Vamos a crear un sistema con ASP.NET y VB.NET 2.0 en el que gestionaremos los usuarios de
nuestra web, la seguridad, y el permiso de acceso a la web mediante un sistema de login. Este
caso vamos a crear la estructura de ficheros y de base de datos.
Usaremos Visual Studio 2005 y SQL Server Express.
En la estructura de nuestro proyecto web, crearemos las carpetas de sistema ASP.NET, que serian
App_Code, y App_Data, y además crearemos una carpeta ordinaria llamada Users.
Dentro de la carpeta Users, añadiremos las páginas web, delete.aspx, login.aspx, modify.aspx,
newuser.aspx y profile.aspx.
Luego en cuando a ficheros, crearemos los archivos, MasterPage.master (Pagina maestra, Page
Master), Web.sitemap (Site map, Mapa del sitio). Estos archivos al hacer clic con el botón derecho,
podremos añadirlos en el menú añadir nuevo elemento.
Y para finalizar vamos a crear la base de datos y la tabla que usaremos para almacenar toda la
información de los usuarios. Pulsamos con el botón derecho en la carpeta ya creada App_Data, y
pinchamos en crear un nuevo elemento, que en este caso, solo nos mostrara una base de datos.
Le dejamos su nombre Database.mdf, y salvamos.
Si no usáis el SQL Express, y usáis el SQL Management Studio, o el SQL Server 2005, también
podréis crear la tabla con este código ejecutándolo como un procedimiento almacenado.
GO
SET ANSI_PADDING OFF
Aquí tenéis.
AS
RETURN
if (Select admin From tblUsers Where UserName = @UserName and Password = @Password) = 1
BEGIN
Select * From tblUsers Where UserName = @UserName and Password = @Password
END
ELSE
BEGIN
Select * From tblUsers Where UserName = @UserName and Password = @Password and Active =
1 and Date_out > GETDATE()
END
RETURN
IF @userexists = 0
BEGIN
RETURN 0
END
ELSE
BEGIN
IF @userexists = 0
BEGIN
RETURN 0
END
ELSE
BEGIN
RETURN -1
END
END
IF @userexists > 0
BEGIN
RETURN -1--User Exists
END
ELSE
BEGIN
Values
(
@UserName,
@Password,
@Active,
@Comments,
GETDATE(),
GETDATE() + 365,
0
)
RETURN 0
END
AS
RETURN
Los archivos, delete.aspx, login.aspx, modify.aspx, newuser.aspx y profile.aspx, llevaran el código
html que vera el usuario. Y Los archivos, delete.vb, login.vb, modify.vb, newuser.vb y profile.vb,
llevarán el código fuente que se ejecutara en el servidor.
Luego, MasterPage.master (Pagina maestra, Page Master), Web.config, Web.sitemap (Site map,
Mapa del sitio), son los algunos de archivos que se han añadido en el nuevo .NET 2.0 que nos
hacen la vida mas fácil a los programadores.
web.config:
<?xml version="1.0"?>
<configuration>
<appSettings/>
<connectionStrings>
<remove name="DataBase"/>
<add name="DataBase" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|
DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"/>
</connectionStrings>
<system.web>
<compilation debug="true">
<assemblies>
<add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<authentication mode="Forms">
<forms name="form_Auth" path="/" loginUrl="users/login.aspx" protection="All"
timeout="10"/>
</authentication>
<authorization>
<allow users="*"/>
</authorization>
</system.web>
<location path="users">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
</configuration>
MasterPage.master:
Web.sitemap:
Default.aspx:
users/modify.aspx:
users/login.aspx:
users/profile.aspx:
users/delete.aspx:
Y terminamos con el codigo de las paginas correspondientes. Recordaros que todas nuestras
clases usan nuestra propia libreria de acceso a datos.
profile.vb:
Catch ex As Exception
lblMessages.Text = User.Errors
End Try
User = Nothing
End If
End Sub
End Class
newuser.vb:
User.UserName = txtUserName.Text
User.Password = txtPassword.Text
User.Comments = txtComments.Text
User.Active = chkActive.Checked
If User.UserAdd Then
lblTextReturn.Text = "Hecho"
txtUserName.Text = ""
txtPassword.Text = ""
txtComments.Text = ""
chkActive.Checked = False
Else
lblTextReturn.Text = User.ErrorsUser
End If
User = Nothing
End Sub
End Class
modify.vb:
If User.UserModify(Request("ID")) Then
lblMessages.Text = "Usuario modificado correctamente."
Else
lblMessages.Text = User.ErrorsUser
End If
User = Nothing
Catch ex As Exception
lblMessages.Text = ex.Message
End Try
Else
lblMessages.Text = "Hay elementos no validos en la pagina."
End If
Else
lblMessages.Text = "Debe especificar un usuario."
End If
End Sub
End Class
login.vb:
delete.vb:
dlluser.vb:
Parameters(0) = "@UserName"
ParametersValue(0) = UserName
Parameters(1) = "@Password"
ParametersValue(1) = Password
Try
If cData.Connect() Then
cData.ErrorsClear()
If Not cData.ReadDataStoreProcPrepare("UserLogin", Parameters, ParametersValue) Then
_Errors = cData.Errors
Login = False
Else
cData.ReadDataStoreProcPrepareExecute()
If cData.ReadHaveData Then Login = True
End If
cData.ReadDataStoreProcClose()
cData.Disconnect()
Else
Login = False
_Errors = "No se pudo conectar con la base de datos."
End If
Catch ex As Exception
Login = False
_Errors = ex.Message
End Try
End Function
Parameters(0) = "@Email"
ParametersValue(0) = My.User.Name
If cData.Connect() Then
cData.ReadDataStoreProcPrepare("UserGetPassword", Parameters, ParametersValue)
Dim a As Data.DataSet = cData.ReadDataStoreProc
GetPassword = cData.ReadSP("Password")
'GetPassword = a.Tables(0).Rows(0).Item("Password")
cData.ReadDataStoreProcClose()
cData.Disconnect()
End If
End Function
Parameters(0) = "@Email"
ParametersValue(0) = My.User.Name
Parameters(1) = "@Password"
ParametersValue(1) = NewP
If cData.Connect() Then
If Not cData.ReadDataStoreProcExecute("UserChangePassword", Parameters, ParametersValue)
Then
ChangePassword = False
Else
ChangePassword = True
End If
cData.ReadDataStoreProcClose()
cData.Disconnect()
End If
End Function
Parameters(0) = "@ID"
ParametersValue(0) = ID
Try
If cData.Connect() Then
cData.ErrorsClear()
If cData.ReadDataStoreProcExecute("UserDelete", Parameters, ParametersValue) Then
If cData.Return_Val = 0 Then
UserDelete = True
Else
_Errors = "Usuario no existia."
End If
Else
_Errors = cData.Errors
UserDelete = False
End If
cData.ReadDataStoreProcClose()
cData.Disconnect()
Else
_Errors = "No se pudo conectar con la base de datos."
UserDelete = False
End If
Catch ex As Exception
_Errors = ex.Message
End Try
End Function
Parameters(0) = "@UserName"
Parameters(1) = "@Password"
Parameters(2) = "@Comments"
Parameters(3) = "@Active"
ParametersValue(0) = _UserName
ParametersValue(1) = _Password
ParametersValue(2) = _Comments
ParametersValue(3) = _Active
If cData.Connect() Then
cData.ErrorsClear()
If Not cData.ReadDataStoreProcExecute("UserAdd", Parameters, ParametersValue) Then
_Errors = cData.Errors
Else
If cData.Return_Val = "-1" Then
_Errors = "El nombre de usuario ya existe."
ElseIf cData.Return_Val = 0 Then
UserAdd = True
End If
End If
cData.ReadDataStoreProcClose()
cData.Disconnect()
Else
_Errors = "No se pudo conectar con la base de datos."
UserAdd = False
End If
End Function
Parameters(0) = "@ID"
Parameters(1) = "@UserName"
Parameters(2) = "@Password"
Parameters(3) = "@Comments"
Parameters(4) = "@Active"
Parameters(5) = "@Date_Out"
ParametersValue(0) = ID
ParametersValue(1) = _UserName
ParametersValue(2) = _Password
ParametersValue(3) = _Comments
ParametersValue(4) = _Active
ParametersValue(5) = _Date_Out
Try
If cData.Connect() Then
cData.ErrorsClear()
If Not cData.ReadDataStoreProcExecute("UserModify", Parameters, ParametersValue) Then
_Errors = cData.Errors
Else
If cData.Return_Val = 0 Then
UserModify = True
End If
End If
cData.ReadDataStoreProcClose()
cData.Disconnect()
Else
_Errors = "No se pudo conectar con la base de datos."
UserModify = False
End If
Catch ex As Exception
_Errors = ex.Message
End Try
End Function
Parameters(0) = "@Email"
ParametersValue(0) = My.User.Name
If cData.Connect() Then
If cData.ReadDataStoreProcPrepare("UserGetMessages", Parameters, ParametersValue) Then
GetMessages = cData.ReadDataStoreProc()
cData.ReadDataStoreProcClose()
cData.Disconnect()
Else
_Errors = "Can't read the messages."
End If
Else
_Errors = "Cant connect with the database."
End If
End Function
Parameters(0) = "@Email"
ParametersValue(0) = My.User.Name
Parameters(1) = "@Month"
ParametersValue(1) = Month
If cData.Connect() Then
If cData.ReadDataStoreProcPrepare("UserGetMessagesByMonth", Parameters, ParametersValue)
Then
GetMessagesByMonth = cData.ReadDataStoreProc()
cData.ReadDataStoreProcClose()
cData.Disconnect()
Else
_Errors = "Can't read the messages."
End If
Else
_Errors = "Cant connect with the database."
End If
End Function
Parameters(0) = "@Email"
ParametersValue(0) = My.User.Name
Parameters(1) = "@String"
ParametersValue(1) = Str
If cData.Connect() Then
If cData.ReadDataStoreProcPrepare("UserGetMessagesSearch", Parameters, ParametersValue)
Then
GetMessagesSearch = cData.ReadDataStoreProc()
cData.ReadDataStoreProcClose()
cData.Disconnect()
Else
_Errors = "Can't read the messages."
End If
Else
_Errors = "Cant connect with the database."
End If
End Function
If ID > 0 Then
Try
Parameters(0) = "@ID"
ParametersValue(0) = ID
If cData.Connect() Then
cData.ErrorsClear()
If cData.ReadDataStoreProcPrepare("UserRead", Parameters, ParametersValue) Then
DS = cData.ReadDataStoreProc()
'_Nombre_Tienda = cData.ReadSP("Nombre_Tienda")
With DS.Tables(0).Rows(0)
_Password = .Item("Password")
_UserName = .Item("UserName")
_Active = .Item("Active")
_Date_Out = IIf(.Item("Date_Out") Is DBNull.Value, "#12:00:00 AM#", .Item("Date_Out"))
_Date_In = .Item("Date_In")
_Comments = .Item("Comments")
End With
UserRead = True
Else
_Errors = cData.Errors
End If
cData.ReadDataStoreProcClose()
cData.Disconnect()
Else
_Errors = "Cant connect with the database."
End If
Catch ex As Exception
_Errors = ex.Message
End Try
Else
_Errors = "User not provided."
End If
End Function
End Class
dllbase.vb:
Imports System.Configuration.ConfigurationManager
Imports GBData
End Class