新手问题 如何 session_store 设置多种登录情况

QueXuQ · 2015年03月29日 · 最后由 flowerwrong 回复于 2015年03月29日 · 3470 次阅读

原来的项目做 ap(使用前端 mvc)i,使用 token 做登录,所以把 session_store 关掉了:

Rails.application.config.session_store :disabled

后面在这个项目的基础上,需要做一个 web 的简单页面,而且不需要用上前端 mvc 了,所以又需要用 session 登录了,可是不知道如何设置可以兼容两种登录情况呢?

这个不需要额外设置。 写一个前置 filter,类似

def current_user
  if session[:user_id]
    @current_user = User.find_by id: session[:user_id]
  else
    @current_user = set_current_user
  end
end

  def http_auth_content
    return @http_auth_token if defined? @http_auth_token
    @http_auth_token = begin
      if params[:auth_token].present?
        params[:auth_token]
      elsif request.headers['Authorization'].present?
        request.headers['Authorization'].split(' ').last
      else
        # fail NoAuthTokenError
        nil
      end
    end
  end

def set_current_user
  @auth_token = http_auth_content
  unless @auth_token.blank?
    @current_user ||= User.where(auth_token: @auth_token).first
  end
end

#1 楼 @flowerwrong session_store :disabled已经设置了无效了,还可以使用session[:user_id]

#2 楼 @QueXuQ

# seesion_store.rb
Rails.application.config.session_store :cookie_store, key: '_key_session'
# in application.rb, do not do this
    config.middleware.delete ActionDispatch::Cookies
    config.middleware.delete ActionDispatch::Session::CookieStore
需要 登录 后方可回复, 如果你还没有账号请 注册新账号