之前做了几个基于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]将登录的用户名取出