Как я могу сделать кнопку выхода в Rails без использования Javascript? - PullRequest
0 голосов
/ 04 января 2019

Я создаю приложение на Rails без использования Javascript, и мне интересно, как я могу реализовать кнопку выхода из системы, чтобы установить для сеанса значение «ноль».В большинстве учебных пособий предлагается использовать «method:: delete», однако для этого требуется использование JavaScript.

Контроллер сеанса:

class SessionsController < ApplicationController
  def new

  end

  def create
    user = User.find_by_username(params[:session][:name])
    if user && user.authenticate(params[:session][:password])
      session[:user_id] = user.id
      redirect_to '/posts'
    else
      session[:user_id] = nil
      flash[:warning] = "Failed login- try again"
      redirect_to '/login'
    end 
  end

  def destroy
    session[:session_id] = nil 
    redirect_to login_path 
  end
end

1 Ответ

0 голосов
/ 08 января 2019

Вы можете использовать button_to вместо link_to.

<%= button_to logout_path, method: :destroy %>

button_to фактически создает отдельный элемент <form> и, таким образом, прекрасно работает даже без JavaScript.method: :destroy добавляет скрытый ввод, который используется Rack::MethodOverride.

При выходе пользователя из системы вы должны сбросить сеанс, а не просто удалить идентификатор пользователя из хранилища сеанса.

def destroy
  reset_session
  redirect_to login_path 
end

Это делает недействительным весь файл cookie для хранения сеанса, а предотвращает фиксацию сеанса .Еще лучше не изобретать колесо аутентификации.

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