martes, 15 de febrero de 2011

Adicionar Validación Captcha en nuestro inicio de sesión

Saludos
En este ejemplo crearemos un captcha sencillo para nuestros formularios de inicio de sesión.
...
Adicionar un nuevo elemento al proyecto de tipo Controlador Genérico  .ashx, el cual contendra la imagen captcha autogenarada aleatoriamente Random() numeros y letras.
El resultante sera como la siguiente imagen:




Al controlador Generico le ponemos el nombre "captcha.ashx"
Insertamos el siguiente código

<%@ WebHandler Language="VB" Class="captcha" %>
Imports System
Imports System.Web

Imports System.Web.SessionState
Imports System.Drawing

Public Class captcha
        Implements IHttpHandler
        Implements IRequiresSessionState

        Public Sub ProcessRequest(context As HttpContext) Implements IHttpHandler.ProcessRequest
                context.Response.ContentType = "image/GIF"

                Dim imagen_GIF As Bitmap = New System.Drawing.Bitmap(80, 30)
                Dim grafico As Graphics = System.Drawing.Graphics.FromImage(imagen_GIF)
                grafico.Clear(Color.Gainsboro)

                Dim tipo_fuente As New Font("Comic Sans", 12, FontStyle.Bold)
                Dim randomNum As String = String.Empty
                Dim autoRand As New Random()

                For x As Integer = 0 To 4
                        randomNum += System.Convert.ToInt32(autoRand.[Next](0, 9)).ToString()
                Next
                Dim i_letra As Integer = System.Convert.ToInt32(autoRand.[Next](65, 90))

                Dim letra As String = (ChrW(i_letra)).ToString()
                randomNum += letra

                context.Session("RandomNumero") = randomNum
                grafico.DrawString(randomNum, tipo_fuente, Brushes.Black, 5, 5)
                imagen_GIF.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif)
                tipo_fuente.Dispose()
                grafico.Dispose()
                imagen_GIF.Dispose()
        End Sub

        Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable
                Get
                        Return False
                End Get
        End Property

End Class


Insertamos un control de tipo Image en el WebForm de inicio de sesión y en su propiedad
ImageUrl le asignamos en nombre del controlador en este caso "captcha.ashx"

y para hacer la prueba

If txtImg.Text = Session("RandomNumero") Then
lblInformacion.Text = "OK."
else
lblInformacion.Text = "Error verifando codigo de la imagen, vuelva a repetirlo"

end if

No hay comentarios:

Publicar un comentario