Я не могу понять, что я делаю здесь неправильно. Я реализовал Super Simple Authentication из учебника Райана Бейтса, и хотя часть входа в систему функционирует правильно, я не могу получить сообщение об ошибке и перенаправление, чтобы оно произошло правильно при неправильном входе.
Райан Бейтс признается в своих комментариях, что он не учел это, но не может выполнить свою рекомендацию. В основном происходит то, что, когда кто-то входит в систему правильно, это работает. Когда введен неверный пароль, он делает то же самое перенаправление и мигает «успешно авторизован», хотя это не так. Ссылки администратора не отображаются (это правильно и защищены ли они ссылками <% if admin?%>), Но мне нужно сказать «сбой входа» и перенаправить на путь входа. Вот мой код:
SessionsController
class SessionsController < ApplicationController
def create
if
session[:password] = params[:password]
flash[:notice] = 'Successfully logged in'
redirect_to posts_path
else
flash[:notice] = "whoops"
redirect_to login_path
end
end
def destroy
reset_session
flash[:notice] = 'Successfully logged out'
redirect_to posts_path
end
end
ApplicationController
class ApplicationController < ActionController::Base
helper_method :admin?
protected
def authorize
unless admin?
flash[:error] = "unauthorized request"
redirect_to posts_path
false
end
end
def admin?
session[:password] == "123456"
end
helper :all # include all helpers, all the time
protect_from_forgery # See ActionController::RequestForgeryProtection for details
#
end