RubyCAS拥有持久的单票和Sinatra

RubyCAS拥有持久的单票和Sinatra,第1张

概述好吧,我是一个巨大的 RubyCAS菜鸟,这让我发疯. 我已经安装了rubycas-client gem,并在this repo跟随官方Sinatra设置.完成此设置的方式,每次我请求页面时,我都会收到一张作为查询附加到URL的一次性票证像这样: http:// localhost:9393 /?ticket = ST-1373928850 …等 如果我刷新页面,我收到一个Sinatra错误,说票 好吧,我是一个巨大的 RubyCAS菜鸟,这让我发疯.

我已经安装了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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1269143.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存