Автоматическое заполнение адреса электронной почты и пароля в веб-браузере, когда пользовательские проверки помнят меня
У меня есть требование автоматического заполнения адреса электронной почты и пароля в форме входа в систему, если пользователь установлен флажок запомнить меня в форме входа в систему.
Поскольку я проверил некоторые документы и поиск в 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>