Member 13544780 Ответов: 1

Перенаправление страницы входа в систему на несколько форм, основанных на пользователях!


Есть 7 команд! и 7 регистрационных данных в моей базе данных sql! Как я могу перенаправить отдельные команды на соответствующие страницы???

Что я уже пробовал:

Мой код до сих пор только для 1 одной страницы входа в систему!
Private Sub ConnectToSQL1()
        Dim con As New SqlConnection
        Dim cmd As New SqlCommand
        con.ConnectionString = "Data Source = (localdb)\MSSQLLocalDB; Initial Catalog = NipunDB; Integrated Security = True"
        con.Open()
        cmd.Connection = con
        cmd.CommandText = " SELECT  UserId, Password FROM   UdeepData WHERE   (UserId = '" & txtudeepusername.Text & "' ) AND (Password = '" & txtudeeppass.Text & "')"
        Dim lrd As SqlDataReader = cmd.ExecuteReader()
        Dim userFound As Boolean = False
        Dim UserId As String = ""
        Dim Password As String = ""

        'if found:
        While lrd.Read
            userFound = True
            UserId = lrd("UserId").ToString
            Password = lrd("Password").ToString
        End While
        'checking the result
        If userFound = True Then
            Response.Redirect("UdeepLogin.aspx")
        Else
            MsgBox("Sorry, username or password not found")
        End If

F-ES Sitecore

Вы не сказали, что определяет каждого члена как часть определенной команды, поэтому ответить невозможно. Если у вас нет возможности распределить пользователей по командам, то это то, что вам нужно сделать...если вы можете быть только в одной команде, то расширьте таблицу, чтобы иметь идентификатор команды, который говорит о команде, в которой находится этот пользователь, и в зависимости от того, что это за значение, перенаправьте его в другое место.

1 Ответов

Рейтинг:
8

Lockwood

Несколько быстрых вещей:

Во-первых.
Вы храните свои пароли в виде обычного текста? Никогда так не делай.

Вторая вещь.
Используйте параметры для вашего запроса. Посмотрите на SQL-инъекцию.

Третья вещь.
Почему же вы тогда храните идентификатор пользователя и пароль, возвращенные из базы данных, в локальных переменных? Они у тебя уже есть. Кроме того, обратите внимание на то, что идентификатор пользователя является отдельной сущностью для имени пользователя.

Четвертое.
Посмотрите на "использование". Это позволит избавиться от вашего соединения, команды и считывателя, когда они будут закончены, без необходимости явно делать это.

Пятое дело.
MsgBox не работает с веб-материалами. (Если только у вас где-то нет функции, которая сопоставляет MsgBox с вещами, которые действительно работают)

Теперь, когда с этим покончено...
Я так понимаю, вы храните отдел персонала в таблице пользователей? Если нет, сделайте это.
Создайте таблицу, что-то вроде LogonActions(Department int, URL varchar(255))

Вот немного лучшая версия вашего кода, но в ней все еще есть много работы, которую нужно сделать.

Private Sub ConnectToSQL1()
        Using con As New SqlConnection, cmd As New SqlCommand
            con.ConnectionString = "Data Source = (localdb)\MSSQLLocalDB; Initial Catalog = NipunDB; Integrated Security = True"
            con.Open()
            cmd.Connection = con
            cmd.CommandText = "SELECT UserId, URL FROM UdeepData u, LogonActions l WHERE UserID = @UserName AND Password = @Password AND u.Department = l.Department"
            cmd.Parameters.AddWithValue("UserName", txtudeepusername.Text)
            cmd.Parameters.AddWithValue("Password", txtudeeppass.Text) 'This is still VERY BAD security.
            Dim userFound As Boolean = False
            Dim UserId As String = ""
            Dim URL As String = ""
            Using lrd As SqlDataReader = cmd.ExecuteReader()
                'if found:
                Do While lrd.Read
                    userFound = True
                    UserId = lrd("UserId").ToString
                    URL = lrd("URL").ToString
                Loop
            End Using
        End Using
        'checking the result
        If userFound = True Then
            Response.Redirect(URL)
        Else
            MsgBox("Sorry, username or password not found") 'This will not work
        End If
    End Sub


Ваш код имеет много проблем в нем, перенаправление в другое место должно быть вашей самой низкой приоритетной заботой об этом в данный момент.