论坛首页 编程语言技术论坛

ruby+cas实现sso

浏览 7001 次
该帖已经被评为良好帖
作者 正文
   发表时间:2008-07-03  

之前做了几个基于ruby,java的系统,现在想把它们整合到一起,首先遇到了单点登录问题,开始是用跨域iframe来实现,效果还行,但安全性不大高,所以还是打算上cas,方案如下:

1 安装cas3.0并配置http://liuqiang.iteye.com/admin/blogs/210679,保证http://localhost:8080/cas能正常运行。

 

2 安装ruby的cas客户端:进入项目根目录,运行ruby script/plugin install http://rubycas-client.googlecode.com/svn/trunk/rubycas-client

 

3 打开config/environment.rb ,在该文件最后也就是等rails初始化完毕,加上 CASClient::Frameworks::Rails::Filter.configure(
    :cas_base_url => "http://localhost:8080/cas"
  )

 

4 在需要校验的控制器中加入 before_filter CASClient::Frameworks::Rails::Filter

 

5 在视图中加入登录链接:<a href="/front/sessions/login">登录</a>

 

6 在负责处理登录的控制器中加上 before_filter :set_current_url , CASClient::Frameworks::Rails::Filter

 
 before_filter :set_current_url ,CASClient::Frameworks::Rails::Filter

  def set_current_url
#记下来源url,因为在之后的验证过程中,来源url会丢失
    cookies[:current_url] = request.referer
  end

 def cas_login
#跳到来源url
    redirect_to cookies[:current_url]
  end
 

 
7 登录完毕后可以用session[:cas_user]将登录的用户名取出

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics