мне нужна переменная сеанса для перехода со страницы на страницу при переходе с одной страницы на другую vb.net - PullRequest
0 голосов
/ 02 февраля 2010

Я новичок в этом. у меня есть 4 страницы. login.aspx, account.aspx, settings.aspx и fliers.aspx. Все это запрограммировано в vb.net с серверной частью sql. на моей первой странице login.aspx у меня есть этот код на странице .vb -

Dim SQL As String = "SELECT * FROM table1 WHERE email='" + Me.txtUserName.Text + "' AND password='" + Me.txtPassword.Text + "' "
ExecuteNonQuery(SQL)
SqlCmd = New SqlCommand(SQL, SqlCnn)
SqlDR = SqlCmd.ExecuteReader
If SqlDR.HasRows Then
    Do While SqlDR.Read()
        Label1.Text = "successfully logged in"
        Dim webUser As New webUser(SqlDR("email"), Session.Item("sqlcnn"))
        Session.Item("webUser") = webUser
        isValidUser = True
    Loop
Else
    Label1.Text = "Failed to login"
End If

Как вы можете видеть, он принимает session.item ("webuser") в качестве электронной почты. это нормально на этой странице. на следующей странице account.aspx необходимо заменить электронную почту идентификатором пользователя, который вошел в систему, а на странице settings.aspx - заменить идентификатор пользователя идентификатором профиля этого пользователя. Все эти таблицы находятся в бэкэнде и имеют данные, но проблема в моем недостатке знаний. Как сделать так, чтобы в сессии были разные переменные.

Ответы [ 3 ]

1 голос
/ 02 февраля 2010

Хлоп.У вас огромные проблемы с безопасностью в вашем коде:

Атаки с использованием SQL http://msdn.microsoft.com/en-us/library/ms998271.aspx

Кроме того, вы должны использовать поставщика членства и проверку подлинности на основе форм: http://support.microsoft.com/kb/301240

Наконец, чтобы установить значение сеанса, просто скажите Session( "Value Name" ) = value

0 голосов
/ 02 февраля 2010

На самом деле лучший способ - это создать объект класса (после того, как вы прочитали ссылки из @Nissan Fan и начали использовать некую безопасную аутентификацию) и сохранить сериализованный объект класса в сеансе. Ваш объект класса должен наследовать класс System.Security.Principal.GenericIdentity или, по крайней мере, реализовать IIdentity. Затем вы можете просто извлечь его из сеанса, привести к нему и получить доступ к свойствам вашего объекта напрямую (имя пользователя / адрес электронной почты / что угодно).

0 голосов
/ 02 февраля 2010

или попробуйте избавиться от встроенного sql и использовать exec. Посмотрите хранимые процедуры и параметры передачи с помощью объекта команды. Пароли также не должны храниться в виде простого текста.

Что касается сессий, то это просто переменные, которые можно изменить, скажем, в событии page_load.

Например,

Session ("FirstName") = "Jon"

Сеанс FirstName имеет значение Jon. Его можно легко изменить на другой странице aspx, просто сбросив его:

На другой странице:

Session ("FirstName") = "Рассвет"

Попробуйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...