原来的项目做 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]?
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