欢迎来到cool的博客
7

Music box

Click to Start

点击头像播放音乐
新博客链接

在RAILS中使用单点登录CAS 客户端( cas client for rails)

参考博客:http://siwei.me/blog/posts/cas-client-for-rails

github:   https://github.com/sg552/rubycas-server

Ruby 客户端 使用方法


0. 在 Gemfile中,加入:

gem 'rubycas-client', :git => 'git://github.com/rubycas/rubycas-client.git'

注意: 不要使用 'rubycas-client-rails' 这个GEM。这个gem会使得你的配置过程不透明,难于调试。


1. environment.rb  的结尾,加上:

CASClient::Frameworks::Rails::Filter.configure(
    :cas_base_url => "http://10.103.13.121:333"     #cas远程的域名
)


2 对应的app/controllers/application_controller.rb中, 加上:

before_filter CASClient::Frameworks::Rails::Filter
注释掉before_filter :authenticate_user!  devise的东西

 

3. 在sessions_controller.rb (如果没有的话创建一个)中定义退出的action:

class SessionsController < ApplicationController
    def destroy
        CASClient::Frameworks::Rails::Filter.logout(self)
    end
end


4. 修改 route.rb ,加入退出的链接(注释devise_for :users):

 match '/logout' => "sessions#destroy", :as => :logout, :via => :delete


5. 修改 application.html.erb 布局文件,增加这个链接。

关键的一点是: 在经典的rails authorization 框架用,都是用 current_user 这个变量取得当前登陆的用户。 在CAS CLIENT中,用的是 session[:cas_user] , 只取得当前用户名,是一个string. 而不是一个model.
<div style="border: 1px solid green">
<%= session[:cas_user] %> 
</div>
<% if session[:cas_user] %>
<%= link_to "logout" , logout_path %> 
<% end %>

返回列表