before_filter를 사용하여 로그인해야하는 작업을 수행하려고하는데, 그렇지 않기 때문에 잘못된 것이 틀림 없습니다.before_filter가 "시작"하지 않는 것 같습니다.
로그인/로그 아웃뿐만 아니라 사용자가 로그인되어 있는지 (signed_in?) 확인하기 위해 'session_helper.rb'라는 헬퍼 파일을 사용합니다. before_filer와 함께 사용하는 동안 동작이나 뷰에서 사용하면 정상적으로 작동하지만 작동하지 않습니다. 사용자를 로그 아웃하고 '/ projects/new'에 액세스하려고 시도하면 가능하지 않지만 그렇게 할 수는 있습니다.
내가 뭘 잘못하고 있니?
프로젝트 컨트롤러 :
class ProjectsController < ApplicationController
before_filter :signed_in?, :except => [:index] // <-- doesn't prevent e.g. the action "new" to be executed
def new
@project = Project.new
@users = (current_user.blank? ? User.all : User.find(:all, :conditions => ["id != ?", current_user.id]))
end
def index
@projects = Project.all
if signed_in? // <-- works as it should
@users_projects = Project.where(:user_id => current_user.id)
end
end
... other actions ...
end
sessions_helper.rb는
module SessionsHelper
def sign_in(user)
cookies.permanent[:remember_token] = user.remember_token
self.current_user = user
end
def signed_in?
!current_user.nil?
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= User.find_by_remember_token(cookies[:remember_token])
end
def sign_out
self.current_user = nil
cookies.delete(:remember_token)
end
end
인증 보석을 사용하고 있습니까? –
인증 보석으로 간주되는 경우 bcrypt-ruby를 사용합니다 ... – dracula