我正在使用 Rails 3.2 和 Authlogic。我有以下代码:
class ApplicationController < ActionController::Base
private
def store_location
session[:return_to] = request.url
end
def redirect_back_or_default(default)
redirect_to(session[:return_to] || default)
session[:return_to] = nil
end
end
class UserSessionsController < ApplicationController
before_filter :require_no_user, :only => [:new, :create]
before_filter :require_user, :only => :destroy
def new
@user_session = UserSession.new
@header_title = "Login"
end
def create
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:success] = "Login successful!"
redirect_back_or_default root_url
else
render 'new'
end
end
def destroy
current_user_session.destroy
flash[:success] = "Logout successful!"
redirect_back_or_default root_url
end
end
这段代码非常通用。当我们使用before_filter
:
before_filter :require_user, :only => [:new, :edit, :update, :create]
它会自动store_location
将我们重定向回正确的页面。但是,我该怎么做:
- 我在
posts/1
其中没有require_user
。 - 我单击顶部导航栏上的登录链接。
- 它显示登录页面。
- 登录后,我将被重定向回
posts/1
而不是root_url
.