Jump to content

Login (Memorizar a minha palavra-passe)


Bamba
 Share

Recommended Posts

Estou com um problema e não sei como o resolver.

Tenho um formulário de login que vai permitir ao utilizador as seguintes opcções:

- Memorizar-me neste computador

- Memorizar a minha palavra-passe

Só que não sei qual será a melhor maneira para a segunda opção, visto que é necessário guardar uma palavra-passe.

Alguém já teve de fazer algo semelhante?

Link to comment
Share on other sites

Olá,

Vê se isto te ajuda (foi um exemplo que encontrei na net):

Partial Class _Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            'Check if the browser support cookies
            If Request.Browser.Cookies Then
               'Check if the cookies with name PBLOGIN exist on user's machine
                If Request.Cookies("PBLOGIN") IsNot Nothing Then
                    'Pass the user name and password to the VerifyLogin method
                    Me.VerifyLogin(Request.Cookies("PBLOGIN")("UNAME").ToString(), Request.Cookies("PBLOGIN")("UPASS").ToString())
                End If
            End If
        End If
    End Sub

    Protected Sub BtLogin_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        'check if remember me checkbox is checked on login
        If (Me.CbRememberMe.Checked) Then
            'Check if the browser support cookies
            If (Request.Browser.Cookies) Then
                'Check if the cookie with name PBLOGIN exist on user's machine
                If (Request.Cookies("PBLOGIN") Is Nothing) Then
                    'Create a cookie with expiry of 30 days
                    Response.Cookies("PBLOGIN").Expires = DateTime.Now.AddDays(30)
                    'Write username to the cookie
                    Response.Cookies("PBLOGIN").Item("UNAME") = Me.TbUserName.Text
                    'Write password to the cookie
                    Response.Cookies("PBLOGIN").Item("UPASS") = Me.TbPassword.Text
  'If the cookie already exist then wirte the user name and password on the cookie
                Else
                    Response.Cookies("PBLOGIN").Item("UNAME") = Me.TbUserName.Text
                    Response.Cookies("PBLOGIN").Item("UPASS") = Me.TbPassword.Text
                End If
            End If
        End If

        Me.VerifyLogin(Me.TbUserName.Text, Me.TbPassword.Text)
    End Sub

    Protected Sub VerifyLogin(ByVal UserName As String, ByVal Password As String)
        Try
            'If login credentials are correct
                 'Redirect to the user page
            'else
                 'prompt user for invalid password
            'end if
        Catch ex as System.Exception
            Response.Write(ex.Message)
        End Try
    End Sub

    Protected Sub lbSignout_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles lbSignout.Click
'Check iIf the cookies with name PBLOGIN exist on user's machine
        If (Request.Cookies("PBLOGIN") IsNot Nothing) Then
            'Expire the cookie
            Response.Cookies("PBLOGIN").Expires = DateTime.Now.AddDays(-30)
        End If

        'Redirect to the login page
    End Sub
End Class

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Link to comment
Share on other sites

Olá,

Para tal precisas de dois algorimos, um para encriptar (no exemplo abaixo: Encrypt), outro para desencriptar (no exemplo abaixo: Decrypt). Atenção que há algorimos de encriptação que são destrutivos (como o MD5), ou seja, depois de encriptares não consegues obter o texto original. Apenas consegues verificar se os dados são iguais comparando os HASH gerados. Podes procurar na Net algoritmos de encriptação ou criares o teu.

Depois de teres os algoritmos implementados apenas tens de os usar.

Exemplo:

' Em vez de :
Me.VerifyLogin(Request.Cookies("PBLOGIN")("UNAME").ToString(), Request.Cookies("PBLOGIN")("UPASS").ToString())
' Vais ter:
Me.VerifyLogin(Decrypt(Request.Cookies("PBLOGIN")("UNAME").ToString()), Decrypt(Request.Cookies("PBLOGIN")("UPASS").ToString()))

' .....
' Em vez de :
Response.Cookies("PBLOGIN").Item("UNAME") = Me.TbUserName.Text
' Vais ter:
Response.Cookies("PBLOGIN").Item("UNAME") = Encrypt(Me.TbUserName.Text)

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Link to comment
Share on other sites

Podes fazer isto usando 2 cookies:

- uma para gravar o utilizador

- outra para gravar a password

Quando o utilizador for fazer Login:

- se a checkbox de gravar utilizador estiver activada, gravas no cookie o utilizador. Se nao estiver activada, apagas este cookie;

- se a checkbox de gravar password estiver activada, gravas no cookie o password encriptada - o ideal era um token que do lado da base de dados mapeia o token para uma pass. Se nao estiver activada, apagas este cookie;

Quando o utilizador abrir a página de Login:

- se tiver cookie de utilizador, preenches o utilizador

- se tiver cookie de password (ou token), preenches a password

Pedro Martins

Sharing is Knowledge!

http://www.linkedin.com/in/rechousa

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.