Автоматическое заполнение адреса электронной почты и пароля в веб-браузере, когда пользовательские проверки помнят меня

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

Поскольку я проверил некоторые документы и поиск в Google, я понял, что это поведение браузера. И это должно быть принятие пользователем автоматического всплывающего окна браузера, которое будет использоваться для получения согласия пользователя на сохранение информации о пользователе.

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

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

1 ответ

Обычно с именем пользователя и паролем мы запоминаем меня:

<%= label_tag :remember_me %>
<%= check_box_tag :remember_me, 1, params[:remember_me] %>
<%= submit_tag "Log in" %>

Когда пользователь нажимает кнопку "Отправить", если мы вызываем действие входа в систему, то обычно это выглядит так:

def login
  user = User.find_by_email(params[:username])
  if user && user.authenticate(params[:password])
    if params[:remember_me]
      cookies.permanent[:auth_token] = user.auth_token
    else
      cookies[:auth_token] = user.auth_token  
    end
    redirect_to root_url, :notice => "Logged in!"
  else
    flash.now.alert = "Invalid email or password"
    render "new"
  end
end

Теперь ваш пользователь хочет автоматически заполнять имя пользователя и пароль, а не автоматический вход. Тогда я думаю, что вы не должны постоянно сохранять токен в куки, как это: cookies.permanent[:auth_token] = user.auth_token а не так cookies[:auth_token] = user.auth_token, И пусть браузер автоматически заполнит форму авторизации.

def login
  user = User.find_by_email(params[:username])
  if user && user.authenticate(params[:password])
    if params[:remember_me]
      cookies[:auth_token] = user.auth_token
    else
      cookies[:auth_token] = user.auth_token  
    end
    redirect_to root_url, :notice => "Logged in!"
  else
    flash.now.alert = "Invalid email or password"
    render "new"
  end
end

Если вы не хотите помещать его в браузер, тогда вы можете сделать следующее, хотя я не думаю, что вы должны делать это:

<%= form_tag sessions_path do %>
  <div class="field">
    <%= label_tag :email %>
    <%= text_field_tag :email, @user.email %>
  </div>
  <div class="field">
    <%= label_tag :password %>
    <%= password_field_tag @user.password %>
  </div>
  <div class="field">
    <%= label_tag :remember_me %>
    <%= check_box_tag :remember_me, 1,remember_me %>
  </div>  
  <div class="actions"><%= submit_tag "Log in" %></div>
Другие вопросы по тегам