【发布时间】:2014-04-02 11:20:53
【问题描述】:
全部,
我有一个视图,它在 onload 中执行一些 JQuery 代码来填充 select_tag 框:
var request = $.get("getLocalSuites");
getLocalSuites 路由到控制器中的以下函数:
def getLocal
myPass = sessionPass
if (myPass != nil)
puts "4"
result = @@p4object.getLocalSuites(sessionUser,myPass)
render :json => result
end
end
其中定义了 sessionPass 和 sessionUser 函数:
def sessionUser()
myConnectedUser = ConnectedUser.find_by username: cookies[:username]
return myConnectedUser[:username]
end
def sessionPass()
begin
myConnectedUser = ConnectedUser.find_by username: cookies[:username]
puts "1"
verifier = ActiveSupport::MessageVerifier.new(cookies[:session])
puts "2"
mysession = verifier.verify(myConnectedUser[:password])
rescue ActiveSupport::MessageVerifier::InvalidSignature
puts "3"
redirect_to sign_in_session_expired_url
end
puts mysession
return mysession
end
换句话说 - 我的 jQuery 调用 getLocal,它会找到存储在数据库中的用户名和密码。然后它根据会话 cookie 验证返回的加密密码。如果此验证失败,它应该重定向回登录页面,而不是尝试继续呈现当前页面。
服务器日志正确显示 Redirected to http://localhost:3000/sign_in_session_expired ... 但不是看到登录屏幕,而是呈现“原始”视图(带有 select_tag 等) - LocalSuites select_tag 填充了某种 HTML - 每个字符作为新行:<!DOCTYPE html> <html etc etc
谁能解释我在这里的误解 - 为什么我的重定向似乎有效(根据服务器日志) - 但实际上并没有发生?
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby url-redirection activesupport