我在rails
应用程序控制器中将一个全局变量声明为 $decrypted_attessec = "verified decrypted cookie"
,并且我正在所有控制器中访问它。关闭浏览器窗口后,全局变量必须设置为 nil 或销毁,这没有完成。
就我而言,它始终保持在这种情况下"verified decrypted cookie"
的初始值,但是,服务器重新启动会破坏全局变量并重新初始化它,我也希望在关闭浏览器时完成。
我的代码:
application_controller.rb
def validate_user
$decrypted_attessec = "verfied decrypted cookie"
#I am getting value of $decrypted_attessec as verfied decrypted cookie from different action which would be either an empty or non-empty string
if !$decrypted_attessec.empty?
#redirect_to clicked path
else
redirect_to "login url"
end
end
Welcome_controller.rb
if $decrypted_attessec.empty?
before_action :validate_user, :except => [:index, :csplogin]
end
我的代码哪里出错了?
首先,@global_variable
根本不是一个全局变量。事实上,它是类对象的实例变量。
其次,全局变量是用前面的$
定义的,例如$global_variable
。请参阅这篇优秀的文章,以了解有关使用全局变量的含义的更多信息。
最后但并非最不重要的一点是,全局变量将不依赖于浏览器的关闭和打开。我建议更多地阐述您的用例,以便更好地解决问题。