mat*_*wvb 6 ruby-on-rails devise ruby-on-rails-3
我有一个应用程序,用户的会员资格到期.
我正在设置一个before_filter在我的applications.rb文件中,以确保他们的成员资格在让他们进入网站之前是有效的.
在我的application.rb文件中:
before_filter :check_account
def check_account
if user_signed_in?
if current_user.account.expired
flash[:error] = "Your account is expired. Please contact Navanti for renewal."
redirect_to destroy_user_session_path
end
end
end
Run Code Online (Sandbox Code Playgroud)
我不断收到重定向循环错误.我猜这是因为正在调用的注销页面也正在执行before_filter,但如果我把except => [:users => :sign_out]它仍然抛出循环错误.
谢谢您的帮助.
要求的设计方法:
# DELETE /resource/sign_out
def destroy
redirect_path = after_sign_out_path_for(resource_name)
signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name))
set_flash_message :notice, :signed_out if signed_out && is_navigational_format?
# We actually need to hardcode this as Rails default responder doesn't
# support returning empty response on GET request
respond_to do |format|
format.any(*navigational_formats) { redirect_to redirect_path }
format.all do
head :no_content
end
end
end
Run Code Online (Sandbox Code Playgroud)
尝试通过以下方式查询控制器/操作:
def check_account
return if params[:controller] == "devise/sessions" && params[:action] == "destroy"
if user_signed_in?
if current_user.account.expired
flash[:error] = "Your account is expired. Please contact Navanti for renewal."
redirect_to destroy_user_session_path
end
end
end
Run Code Online (Sandbox Code Playgroud)
这应该消除你所拥有的重定向循环.
| 归档时间: |
|
| 查看次数: |
4722 次 |
| 最近记录: |