(文章是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com)

进行中,未完待续

Ruby 客户端 使用方法
0. 在 Gemfile中,加入:

gem 'rubycas-client'
然后 $sudo bundle

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

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

CASClient::Frameworks::Rails::Filter.configure(
:cas_base_url => "http://11.11.11.11:111"
)
2 对应的controller 中, 加上:

before_filter CASClient::Frameworks::Rails::Filter

注意: 不要在 application_controller中加这句。否则的话所有的controller, 包括登录页面都会受影响。

3. 在sessions_controller.rb 中定义退出的action:

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

4. 修改 route.rb ,加入退出的链接:

PaddyField::Application.routes.draw do
resources :fish
match '/logout' => "sessions#destroy", :as => :logout, :via => :delete
end

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 %>

单元测试中如何模拟登录?

非常简单,用这个

CASClient::Frameworks::Rails::Filter.fake("some_user")

例如:

# spec_helper.rb
def login
CASClient::Frameworks::Rails::Filter.fake("some_user")
end

然后就可以调用它了.

# in some rspec file
require 'spec_helper' describe MessagesController do
render_views
before do
login
@message = FactoryGirl.create(:message, :vid => 1, :title => "test")
end
it "should get show" do
get :show, :id => @message.id
response.should be_success
end
end

rubycas-client单点登录的更多相关文章

  1. cas 单点登录出现org.jasig.cas.client.util.CommonUtils.getResponseFromServer - 拒绝连接 Connection refused

    cas 单点登录出现org.jasig.cas.client.util.CommonUtils.getResponseFromServer - 拒绝连接 Connection refused 环境: ...

  2. cas+tomcat+shiro实现单点登录-4-Apache Shiro 集成Cas作为cas client端实现

    目录 1.tomcat添加https安全协议 2.下载cas server端部署到tomcat上 3.CAS服务器深入配置(连接MYSQL) 4.Apache Shiro 集成Cas作为cas cli ...

  3. CAS单点登录实践(spring cas client配置)

    前言: 最近的项目需要将多个站点统一登录,查阅了资料Jasig cas(Central Authentication Service)(官方站点:http://www.jasig.org/cas)使用 ...

  4. cas单点登录系统:客户端(client)详细配置(包含统一单点注销配置)

    最近一直在研究cas登录中心这一块的应用,分享一下记录的一些笔记和心得.后面会把cas-server端的配置和重构,另外还有这几天再搞nginx+cas的https反向代理配置,以及cas的证书相关的 ...

  5. 著名ERP厂商的SSO单点登录解决方案介绍一

          SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同一个用户 ...

  6. CAS FOR WINDOW ACTIVE DIRECTORY SSO单点登录

    一.CAS是什么? CAS(Central Authentication Service)是 Yale 大学发起的一个企业级的.开源的项目,旨在为 Web 应用系统提供一种可靠的单点登录解决方法(支持 ...

  7. cas单点登录搭建

    Cas Server下载:http://developer.jasig.org/cas/ Cas Client下载:http://developer.jasig.org/cas-clients/ 测试 ...

  8. 教你开发asp.net的单点登录系统

    单点登录系统,简称SSO.以下是我花了几个小时写的一个简单实现.特把实现思路和大家分享. 背景:某项目使用ASP.NET MemberShip来做会员系统,需要同时登录多个系统.而项目的开发人员无法在 ...

  9. .NET基于Redis缓存实现单点登录SSO的解决方案[转]

    一.基本概念 最近公司的多个业务系统要统一整合使用同一个登录,这就是我们耳熟能详的单点登录,现在就NET基于Redis缓存实现单点登录做一个简单的分享. 单点登录(Single Sign On),简称 ...

  10. 点单登录原理和java实现简单的单点登录

    引用自:http://blog.csdn.net/zuoluoboy/article/details/12851725 摘要: 单点登录(SSO)的技术被越来越广泛地应用到各个领域的软件系统当中.本文 ...

随机推荐

  1. 从零开始写redis客户端(deerlet-redis-client)之路——第一个纠结很久的问题,restore引发的血案

    引言 正如之前的一篇博文,LZ最近正在从零开始写一个redis的客户端,主要目的是为了更加深入的了解redis,当然了,LZ也希望deerlet客户端有一天能有一席之地.在写的过程当中,LZ遇到了一个 ...

  2. Bootstrap2和3的区别

    如果你需要兼容IE8甚至是IE7和IE6,那么只能选择Bootstrap2,虽然它自身在IE6的效果也并不完美.     但是倘若你跟随时代的脚步,并且面向的客户也很高端大气上档次地选择只需要兼容高级 ...

  3. php中命名空间的使用

    简单使用 命名空间主要解决函数/类冲突的问题.由于PHP中中不允许函数重载,所以我们要使用的到命名空间的.先看一个简单的例子. <?php namespace A; public functio ...

  4. JS建造者模式

    function getBeerById( id, callback){ _request('GET','URL'+id,function(res){ callback(res.responseTex ...

  5. 【 Jquery插件】引导用户如何操作网站功能的向导

    Joyride是一个jQuery插件,可以利用它来创建一个引导用户如何操作网站功能的向导.通过定义一个操作步骤顺序,这个插件会在需要操作的HTML元素旁边显示一个帮助说明的Tooltips. http ...

  6. Java-TreeSet

    如下: package 集合类.Set类; /** * Set不允许重复数据 */ /** * TreeSet 是用来进行集合排序的,请注意他和LinkedHashSet的区别. TreeSet是按照 ...

  7. Session的异常

    既然这一天就这么废了,那就多说一些吧!其实session也是有潜在的问题的.Session销毁的三种情况: (1)超时:超过30分钟 (2)服务器非正常关闭,如果自己手动stop service而不是 ...

  8. 【Matplotlib】 移动spines

    相关文档: Spines Axis container Transformations tutorial Spines 是连接轴刻度标记的线,而且标明了数据区域的边界. 他们可以被放置在任意位置.直到 ...

  9. Struts2的使用以及Spring整合Struts2

    一.如何单独使用Struts2 (1)引入struts2的jar包 commons-fileupload-1.2.1.jar freemarker-2.3.15.jar ognl-2.7.3.jar ...

  10. Oracle新建数据库(新用户)

    1.首先,创建(新)用户: create user username identified by password; username:新用户名的用户名 password: 新用户的密码也可以不创建新 ...