prakashraj2890 Ответов: 1

Asp.net: ведение истории паролей и предотвратить для того чтобы установить 5 старый пароль


Всем привет,
Я новичок в этом деле. asp.net и пытается создать одно приложение, где в момент
сброс пароля пользователь не должен иметь возможности использовать свои 5 старых паролей.
но я не могу понять, как вести историю паролей для каждого пользователя в базе данных.
Пожалуйста, помогите мне.

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

это таблица, которую я имею для регистрации пользователя

Идентификатор инт
First_Name varchar2(50)
Last_Name varchar2(50)
пароль varchar2(50)
электронная почта varchar2(50)

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

Karthik_Mahalingam

проверить это
http://stackoverflow.com/a/9493800/1147428

1 Ответов

Рейтинг:
12

F-ES Sitecore

На самом деле есть много способов сделать это. Хотя вам наверняка понадобится новый стол

Пользователь (ID, First_Name, Last_Name, email)

Пароли (идентификатор, идентификатор пользователя, пароль, активный (бит))

User
----
1 | John | Doe | me@here.com

Password
--------

1 | 1 | hello | 0
2 | 1 | world | 1


Итак, у пользователя 1, Джо, есть текущий пароль " мир "и предыдущий пароль"привет". Вероятно, вам также понадобится поле даты для этого пароля, которое показывает, когда он был создан. Чтобы получить текущий пароль, вы просто присоединяетесь к пользователю с паролем

Выбрать * из [пользователь] тебя присоединиться [пароль] П О П.Идентификатор пользователя = у.ID и С. Активный = 1

Для этого метода потребуется индекс столбца UserID таблицы паролей. Альтернатива была бы такой

Пользователя (идентификатор, имя, фамилия, адрес электронной почты, PasswordID)

Пароли (ID, UserID, Password)

User
----
1 | John | Doe | me@here.com | 2

Password
--------

1 | 1 | hello
2 | 1 | world


Затем, чтобы получить пароль, вы присоединитесь к таблице паролей на PasswordID on User. С помощью любого из этих методов вы просто проверяете старые пароли при создании новых, и если их история превышает 5, удаляете все, что выходит за пределы пятого.

Кроме того, я надеюсь, что вы шифруете свои пароли и не храните их в виде обычного текста.


prakashraj2890

Спасибо за ваш ответ.. :)
Но здесь я столкнулся с одной проблемой


Пользователь (ID, First_Name, Last_Name, email)

Пароли (идентификатор, идентификатор пользователя, пароль, активный (бит))

Здесь в таблице пользователей столбец " ID " является столбцом identity
Поэтому в момент вставки данных в таблицу паролей не удалось получить значение столбца "UserId" в storeprocedure

F-ES Sitecore

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

prakashraj2890

Это я уже сделал..
здесь я проверяю введенный адрес электронной почты уже используется для регистрации, если да, то не позволяет получить регистрацию(извините за плохой английский)
Я использовал эту функцию "@@IDENTITY". пожалуйста, подскажите мне, где лучше использовать эту функцию или иметь другую лучшую альтернативу .
Спасибо.



создать proc spRegistration
@fname nvarchar(20),
@lname nvarchar(20),
@password nvarchar(20),
@email nvarchar(20)
как
Начать
объявить @uid int
объявить @Count int
declare @ReturnCode int

выберите @Count = COUNT(электронная почта)
из сведений о пользователях, где электронная почта=электронная почта
если @Count> 0
Начать
set @ReturnCode=-1
конец
ещё
begin set @ReturnCode=1
Вставить в userinformation значения
(@fname,@lname,@email)

набор @идентификатор=функция@@Identity
вставить в passhistory (userId,password,Active ) значения (@uid,@password, 1)
конец
выберите @ReturnCode в качестве ReturnValue
Конец

F-ES Sitecore

Вы должны использовать SCOPE_IDENTITY вместо @ @ IDENTITY

набор @идентификатор=функция scope_identity()

prakashraj2890

хорошо большое спасибо