我已经安装了rubycas-clIEnt gem,并在this repo跟随官方Sinatra设置.完成此设置的方式,每次我请求页面时,我都会收到一张作为查询附加到URL的一次性票证像这样:
http:// localhost:9393 /?ticket = ST-1373928850 …等
如果我刷新页面,我收到一个Sinatra错误,说票已经用完了!
那么我有两个问题.
>每次重新加载票证是否符合标准?
>如何保存会话的CAS登录并仍保留单点登出?
我做了什么:
>我已经离开并尝试实施:Sinatra中的会话,但这会导致单点注销失败.
>我已经尽力遵循rubycas-client
GitHub Repo中的步骤(用Sinatra的会话助手替换ActiveRecord会话存储).
Sinatra的RubyCAS文档很差,所以我正在寻找一个明确的答案.
解决方法 当您尝试使用相同的票证重新加载页面时,它正在执行正确的 *** 作.该票已经过验证.获得验证响应后,您需要设置自己的应用程序cookie或其他会话选项.我通常会添加一个方法,将会话属性添加到用户的cookie中,如:
session["cas"]["username"] = <user from cas valIDation response>
然后在将来的请求中,Sinatra应用程序可以使用辅助方法保护您想要的任何路由,例如:
cas = RestClIEnt::Resource.new "#{cas_url}/login",:timeout => 5checked = cas.getreturn true if checked.code == 200
在我的Sinatra配置块中,我这样做:
use Rack::Session::cookie,:key => "example.com",:secret => "veryrandomhex"
我希望这有帮助,有任何问题让我知道.
更新下面
在讨论这个问题时,我们发现RubyCas说在使用CAS时不会在生产中使用常规cookie会话用于ruby应用程序.你想要做的是:
A.确保您的cookie在CAS cookie的同时或更早到期
和/或
B.确保您的cookie是每个浏览器会话,然后在下一个浏览器会话中重新验证CAS用户.
对于Rack cookie,您可以在cookie设置为expire时指定此额外配置:: expire_after => 1440,(1440分钟)
总结以上是内存溢出为你收集整理的RubyCAS拥有持久的单票和Sinatra全部内容,希望文章能够帮你解决RubyCAS拥有持久的单票和Sinatra所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)