sandeepbhatt1989 Ответов: 2

Как заблокировать учетную запись пользователя(как заблокировать текущего пользователя, который вводит неправильные учетные данные пользователя), если он вводит более 5 раз неправильные учетные данные пользователя


how to user block if user enter five time wrong password and what is logic in SQL Server of block user for 30 minute if 5 time enter invalid password. and how to set this time 30 minute to 0 minute after 30 minute. I am trying in sql server


CREATE PROCEDURE Usp_CheckLoginDetail
-- Add the parameters for the stored procedure here
@Userid nvarchar(100),
@Password varchar(500),
@ResponseMsg int OUTPUT
AS
BEGIN
  -- SET NOCOUNT ON added to prevent extra result sets from
  -- interfering with SELECT statements.
  SET NOCOUNT ON;
 
  BEGIN TRY

    IF EXISTS (SELECT Count(*) FROM TM_UserDetails WHERE UserId = @UserId) --Check User is Valid or not
    BEGIN
      IF EXISTS (SELECT Count(*) FROM TM_UserDetails WHERE UserId = @UserId AND [Password] = @Password and FirstLoginStatus=0 and FreezeStatus = 0 and BlockedStatus = 0)--Check User id and password is Valid 
      BEGIN
        SELECT          *
        FROM TM_UserDetails 
      END
      ELSE if EXISTS(SELECT Count(*) FROM TM_UserDetails WHERE UserId = @UserId AND [Password] = @Password and FirstLoginStatus=1 and FreezeStatus = 1 and BlockedStatus = 0)--Check User id and password is Valid but user is doing first time login
      BEGIN
        SET @ResponseMsg = 2  -- First Time User
		--Code Will be write later
      END
	  ELSE ---If User Enter Wrong Password code block
      BEGIN
	  declare @Couter int = 1
	  declare @Count int
	  declare @BlockCount int,@BlockedDte datetime,@BlockStatus bit 
	  select  @BlockCount = ISNULL(BlockCount,0) , @BlockedDte = ISNULL(BlockedDate,getdate()) ,@BlockStatus = ISNULL(BlockedStatus,0) from TM_UserDetails where UserId = @Userid
	  if @BlockCount < 5
	  begin
	  set @BlockCount = @BlockCount + 1
	  update TM_UserDetails set BlockCount = @BlockCount , BlockedStatus = 1 , BlockedDate = GETDATE() where  UserId = @Userid
	  End
	  else if @BlockCount = 5
	  begin
	  SET @ResponseMsg = 5 -- Blocked User
	  end

      END
    END
    ELSE
    BEGIN
      SET @ResponseMsg = 1  -- Invalid User
    END
  END TRY
  BEGIN CATCH
    SET @ResponseMsg = 3  -- Invalid User
  END CATCH


END

GO


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

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

F-ES Sitecore

Это зависит от того, как вы аутентифицируете людей, и поскольку вы еще не сказали, что невозможно дать ответ.

sandeepbhatt1989

я занимаю целый день, чтобы проверить, что пользователь ввел неправильный пароль. Через 24 часа, если пользователь введет 5 раз неправильный пароль, то пользователь станет заблокированным. Затем как реализовать это действие в процедуре Sql.

2 Ответов

Рейтинг:
14

RaunakGupta

когда вы обнаружите, что пользователь ввел 5 раз неправильный пароль пользователя, вы можете добавить один столбец, как я предлагаю, и добавить datetime. now + 30 мин.мы называем blockTime .. и не попробовать установить равным 0.
как будто я набираю неправильное имя пользователя и пароль 4 раза . в 9: 30 утра я ввел неправильное имя пользователя и пароль, так что . DatetimNow+30 мин =10:00 утра . так что пользователь находится блок 10:00 утра..
и установите NoOfTimes равным нулю.

с 9: 30 до 10:00 утра он пытается подтвердить, что он блокируется на это время. в каждый раз, когда вы аутентифицируетесь, проверка пользователя datetime now меньше времени блокировки или нет.

после 10: 00 утра пользователь пытается получить доступ, а затем удалить время блокировки, так как пользователь пытается получить доступ к 10: 05, и тот же процесс вы можете продолжить


sandeepbhatt1989

Ото я попробую эту логику...

Рейтинг:
10

RaunakGupta

Положите одного конунтера в стол аутентификации.

любить
Имя Пользователя| Пароль |NoOfTime |BlockTime |
xyz | xyz / 0 |
ABC | abc / 5 / 2: 30 вечера

если пользователь вводит неверные значения cridenticial, увеличьте значения nooftime при попытке аутентификации .. если аутентификация правильна, то установите значения nooftime равными 0.
если NoOfTime< 5
Установите значение в BlockTime и установите NoOfTime равным 0.


таким образом, вы можете сделать это.


sandeepbhatt1989

но какая логика в SQL Server блокировать пользователя на 30 минут, если 5 раз ввести неверный пароль? и как установить это время от 30 минут до 0 минут через 30 минут. Я пытаюсь

Если существует (выберите Count (*) из TM_UserDetails, где UserId = @UserId) --проверьте, является ли пользователь действительным или нет
НАЧАТЬ
Если существует (выберите Count (*) из TM_UserDetails, где UserId = @UserId и [Password] = @Password и FirstLoginStatus=0 и FreezeStatus = 0 и BlockedStatus = 0) - Проверьте, действительны ли идентификатор пользователя и пароль
НАЧАТЬ
ВЫБИРАТЬ *
Из TM_Password_History
КОНЕЦ
Еще если существует(выбрать количество(*) из TM_UserDetails где userId = @userId и [пароль] = @пароль и FirstLoginStatus=1 и FreezeStatus = 1 и BlockedStatus = 0)--Проверьте ID пользователя и пароль, но пользователь делает первый раз войти
НАЧАТЬ
SET @ResponseMsg = 2 -- первый пользователь
-- Код будет написан позже
КОНЕЦ
Иначе - - - если пользователь вводит неправильный код пароля блокируется
НАЧАТЬ
объявить @Couter int = 1
объявить @Count int
объявите @BlockCount int,@BlockedDte datetime, @ BlockStatus bit
выберите @BlockCount = функция isnull(BlockCount,0) , @BlockedDte = функция isnull(BlockedDate,функции getdate()) ,@BlockStatus = функция isnull(BlockedStatus,0) от TM_UserDetails где userId = @userId, которое
если @BlockCount < 5
начать
set @BlockCount = @BlockCount + 1
TM_UserDetails обновить набор BlockCount = @BlockCount , BlockedStatus = 1 , BlockedDate = функции getdate() где userId = @userId, которое
Конец
иначе если @BlockCount = 5
начать
SET @ResponseMsg = 5 -- заблокированный пользователь
конец