• rubycas-client单点登录


     (文章是从我的个人主页上粘贴过来的,大家也可以访问我的主页 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
  • 相关阅读:
    解决方案E: Unable to locate package ros-kinetic-rgbd-launch
    记一件无聊但有意思的小事
    硬件开发相关工具、名词备忘
    Verilog代码规范(持续更新)
    GIT简单使用——多人协作篇
    GIT简单使用——私人库篇
    调试Scrapy过程中的心得体会
    Selenium学习(三)Selenium总是崩溃的解决办法
    Selenium学习(二)入门小例子
    Selenium学习(一)环境搭建
  • 原文地址:https://www.cnblogs.com/iwangzheng/p/3578020.html
Copyright © 2020-2023  润新知