Avatar billede curriculum Nybegynder
31. januar 2005 - 18:34 Der er 2 kommentarer og
1 løsning

Login med authentication

Jeg har læst og prøvet flere eksempler af kode, men er ikke kommet til en rigtig løsning, så jeg forsøger nu med et konkret spørgsmål. Det skal siges, at måske er flere fejl i min kode.

Jeg har disse controls i min aspx fil:
ErrorMessage (Label)
txtUsername (TextBox)
txtPassword (TextBox)
chkPersistLogin (CheckBox)
btnLogin (Button)

Dette er min vb script fil:
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.Security
Imports System.Configuration

Public Class Login
    Inherits System.Web.UI.Page
    Protected WithEvents txtUserName As System.Web.UI.WebControls.TextBox
    Protected WithEvents txtPassword As System.Web.UI.WebControls.TextBox
    Protected WithEvents ErrorMessage As System.Web.UI.WebControls.Label
    Protected WithEvents chkPersistLogin As System.Web.UI.WebControls.CheckBox
    Protected WithEvents btnLogin As System.Web.UI.WebControls.Button
    Protected WithEvents BtnSubmit As System.Web.UI.WebControls.Button

#Region " Web Form Designer Generated Code "

    'This call is required by the Web Form Designer.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

    End Sub

    Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
        'CODEGEN: This method call is required by the Web Form Designer
        'Do not modify it using the code editor.
        InitializeComponent()
    End Sub

#End Region

    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
    End Sub

    Sub ProcessLogin(ByVal objSender As Object, ByVal objArgs As EventArgs)
        If FormsAuthentication.Authenticate(txtUserName.Text, txtPassword.Text) Then
            FormsAuthentication.SetAuthCookie(txtUserName.Text, False)
            Response.Cookies("AspxUserName").Value = txtUserName.Text
            Response.Redirect("Login.aspx")
        Else
            ErrorMessage.Text = "<b>Invalid Credentials. Please try again...</b>"
        End If
    End Sub

    Function Authenticate(ByVal user As String, ByVal pass As String) As Boolean
        Dim authenticated As Boolean = False
        Try
            Dim myConnection As SqlConnection = New SqlConnection(ConfigurationSettings.AppSettings("conn"))
            Dim myCommand As SqlCommand = New SqlCommand("sp_AuthenticateUser", myConnection)
            myCommand.CommandType = CommandType.StoredProcedure

            Dim myUserId As SqlParameter = New SqlParameter("@UserId", SqlDbType.VarChar, 20)
            myUserId.Value = user.Trim()
            myCommand.Parameters.Add(myUserId)

            Dim myPassword As SqlParameter = New SqlParameter("@Password", SqlDbType.VarChar, 15)
            myPassword.Value = pass.Trim()
            myCommand.Parameters.Add(myPassword)

            Dim Isvalid As SqlParameter = New SqlParameter("@IsValid", SqlDbType.Int)
            IsValid.Direction = ParameterDirection.Output
            myCommand.Parameters.Add(IsValid)

            myConnection.Open()
            myCommand.ExecuteNonQuery()
            myConnection.Close()

            If Convert.ToInt16(Isvalid.Value) = 1 Then
                authenticated = True
            End If
        Catch e As Exception
            Response.Write("Auth Exception: " + e.ToString())
        End Try

        Return authenticated
    End Function

    Sub SignOut(ByVal objSender As Object, ByVal objArgs As EventArgs)
        FormsAuthentication.SignOut()
        Response.Redirect("Login.aspx?Manage=Logout")
    End Sub

End Class

Og jeg bruger denne stored procedure i MS SQL'en
CREATE PROCEDURE dbo.sp_AuthenticateUser @UserId varchar(20), @Password varchar(20) , @IsValid int output AS

BEGIN
    IF (SELECT COUNT(*) FROM tUser WHERE sUserName = @UserId And sPassword = @Password ) = 1
        SET @ISValid = 1
    ELSE
        SET @IsValid = 0
    Return
END
GO

Kan nogen give mig en god løsning på problemet.
Avatar billede burningice Nybegynder
31. januar 2005 - 19:39 #1
du kalder jo aldrig din Authenticate-funktion

If Authenticate(txtUserName.Text, txtPassword.Text) Then

            FormsAuthentication.Authenticate(txtUserName.Text, txtPassword.Text)
            FormsAuthentication.SetAuthCookie(txtUserName.Text, False)
            Response.Cookies("AspxUserName").Value = txtUserName.Text
            Response.Redirect("Login.aspx")
        Else
            ErrorMessage.Text = "<b>Invalid Credentials. Please try again...</b>"
        End If
Avatar billede curriculum Nybegynder
01. februar 2005 - 13:57 #2
Ja det har du ret i cyber :) jeg fandt ud af den efter jeg havde sendt spørgsmålet afsted.. jeg havde nok sidder for længe med at få den til at fungere...

Hvis du er interesseret, så sender du et svar.
Avatar billede burningice Nybegynder
01. februar 2005 - 18:08 #3
:) svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester