`
wlo_o
  • 浏览: 50511 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

通过Cookie实现Redmine单点登录

    博客分类:
  • ruby
阅读更多

分属于2个不同的系统,它们之间不能共用同一套Session,要实现SSO这就需要使用一些特殊的机制来实现它们之间的互相通信。最简单的方法是使用Cookie来实现。(Redmine中支持LDAP认证,不过需要搭建Ldap服务器,现在没搞明白正在研究,稍后再介绍

首先要修改一下RedMine中的代码,配置action,通过访问www.example.com/redmine/ssologin的url进行登录验证

修改redmine/config/routes.rb添加下面代码

rails 代码
map.signin 'ssologin', :controller => 'account', :action => 'ssologin'  
 

修改redmine/app/controllers/account_controller.rb添加ssologin方法

def ssologin   
    if cookies[:ssoid] && cookies[:uid] && cookies[:ssoid] == "验证码"  
      user = User.try_to_ssologin(cookies[:uid])   
      successful_authentication(user)   
    else  
      cookies.delete : ssoid   
      cookies.delete : uid   
      flash.now[:error] = "无权访问,请与管理员联系"  #错误信息提示   
      render :template => "account/login"           #跳转到登陆页面   
    end  
  end  
 

修改redmine/app/models/user.rb 添加用户查询方法

def self.try_to_ssologin(login)   
  user = find_by_login(login)   
  user.update_attribute(:last_login_on, Time.now)ifuser && !user.new_record?   
  user   
end  
 


ssh项目里action类内获取用户id和验证码并填入到Cookie中


public String redmineLogin(){   
    Cookie cUid = new Cookie("uid","admin");//假设登录用户是"admin   "
    cUid.setMaxAge(-1);   
    cUid.setPath("/");   
    Cookie cSsoid = new Cookie("ssoid","验证码");   
    cSsoid.setMaxAge(-1);   
    cSsoid.setPath("/");   
    this.getResponse().addCookie(cUid);   
    this.getResponse().addCookie(cSsoid);   
    return SUCCESS;   
}   
 

配置Action

<action name="index" class="user.admin.redmineAction" method="index">  
    <result name="success" type="redirect">http://localhost/redmine/ssologin</result>  
</action>  
 

添加一个jsp测试页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <body>  
    <a href="/my/redmine/index">http://localhost/my/redmine/index</a>  
  </body>  
</html>  
 

代码添加完下面就要配置服务器测试使用cookie进行单点登录了。
bitnami-redmine安装完会启动了2个mongrel服务通过apache进行加载均衡,由于不太熟悉Apache,这里使用Nginx进行统一部署。
修改Nginx的nginx.conf添加


server {   
        listen 80;   
        server_name localhost;   
        location ^~ /redmine/ {   
        proxy_pass http://localhost:3001/redmine/;   
        }   
        location / {   
        proxy_pass http://localhost:8080/;   
        }   
    }   
 

访问ht tp://localhost时页面跳转到Tomcat服务器
访问ht tp://localhost/redmine时跳转到Mongrel服务器




点击链接后便可以通过cookie传递用户"admin"跳转到Redmine进行验证了




到此Redmine的单点登录功能就简单实现。用户同步问题可以使用Redmine中的Ldap协议进行同步也可以在单点登录验证时,如果发现无此用户就立即创建一个用户。

 

本文转自http://www.po-soft.com/hi/wlo_o/blog/2043

更多内容请访问OECP社区

分享到:
评论

相关推荐

    redmine配置sso单点登录插件

    redmine本身没有提供单点登录功能,这个插件可以提供redmine的单点登录。解压后将这两个文件放置在redmine目录的plugins目录中。具体操作参照README.md。每个解压文件中都有个EADME.md

    单点登录整合

    在"跨域访问的单点登录"这个主题中,我们主要关注的是如何实现不同域名或子域名间的SSO。跨域SSO在现代企业环境中尤其重要,因为许多企业应用可能分布在不同的服务器或云服务上,而用户需要在这些系统间无缝切换。 ...

    Redmine在Windows下实现自动备份和异地备份

    Redmine在Windows下实现自动备份和异地备份 1.Redmine备份内容 Redmine在Windows下的自动备份实现,包括: 1)Redmine目录的全备份(1周或1个月备份1次,由windows计划来调度执行),将整个Redmine安装的文件夹全部...

    通过kubernetes安装redmine

    此文介绍通过kubernetes安装redmine。 详细介绍请参考博客文章:https://mp.csdn.net/postedit/82082134 此文档为excel格式,保护操作步骤的大部分截图,方便学习。 主要包括以下内容: 从github取得redmine的yaml...

    jredmine:使用Java实现Redmine的实现

    Redmine是一个开源的项目管理软件,而jredmine可能是为了让开发者能够通过Java与Redmine系统进行交互,如创建、更新和查询项目信息等。 **描述分析:**"杰瑞明 使用Java实现Redmine的实现 去做 前端精制 添加更新...

    Redmine 管理员手册

    为了简化用户的登录过程,Redmine支持配置单点登录(SSO),管理员可以设置单点登录的相关配置,以便用户可以通过一个集中的身份认证系统来登录Redmine。 16. 从LDAP同步账号 为了避免手动创建用户账号的麻烦,管理...

    redmine自定义插件开发

    红矿(Redmine)是一款基于Ruby on Rails的开源项目管理工具,提供了强大的插件机制,允许开发者创建自己的插件,以满足不同的需求。在本文中,我们将详细介绍如何开发一个红矿自定义插件,包括插件的创建、编辑、...

    redmine使用jmeter批量创建issue

    5. **设置循环次数**:如果希望创建更多Issue,可以通过调整线程组的迭代次数来实现。也可以设置CSV Data Set Config的“Sharing mode”来控制文件行的遍历方式,比如“全部线程”或“当前线程”。 6. **运行测试**...

    redmine-java-api

    **标题解析:** "redmine-java-api" 是一个与Redmine项目管理软件相关的Java库,它提供了对...通过这些知识点,开发者可以利用redmine-java-api与Redmine系统进行深度集成,实现定制化的项目管理和协作解决方案。

    redmine_gitlab_hook plugin

    《Redmine GitLab Hook 插件详解:实现代码仓库的无缝集成》 在现代软件开发环境中,项目管理和版本控制工具的协同工作至关重要。Redmine 是一款开源的项目管理软件,而 GitLab 则是广受欢迎的分布式版本控制系统。...

    BitNami的Redmine升级步骤

    本文将详细介绍如何通过BitNami Stack迁移数据并升级Redmine的过程。 #### 二、准备工作 在正式开始升级之前,需要做好一系列准备工作,以确保整个过程顺利进行。 1. **备份当前环境**:在任何升级操作之前,都应...

    Redmine API (Redmine 官方文档pdf版)

    ### Redmine API 知识点解析 #### 一、引言 Redmine 是一款非常流行的开源项目管理和跟踪系统,它支持多项目管理、问题跟踪、甘特图/时间线、新闻管理、版本控制等特性。为了更好地与外部系统集成以及方便用户通过...

    Redmine缺陷数量统计

    这可能是通过修改代码或者输入命令行参数来实现的,确保选择合适的日期范围以获取有效的数据。 3. **运行统计脚本**:完成配置后,运行提供的脚本(可能是一个Python、Ruby或其他语言的程序),它将从Redmine数据库...

    redmine_saml-源码.rar

    当将SAML与Redmine结合时,可以实现单点登录(Single Sign-On, SSO),提升用户访问系统的便捷性和安全性。"redmine_saml-源码.rar" 文件包含了Redmine插件实现SAML功能的源代码,这对于我们理解Redmine如何集成SAML...

    redmine的一些教程

    5. **集成能力**:Redmine可以通过API与其他工具(如Git、SVN等版本控制系统,Jenkins等持续集成工具)集成,实现无缝工作流程。 二、Redmine用户手册 `Redmine user_guide.pdf` 提供了详细的用户操作指南,包括:...

    redmine中文使用手册

    Redmine是一款流行的开源问题跟踪系统,为团队管理提供了一整套解决方案,包括任务分配、进度监控、版本控制与BUG...通过以上步骤,用户可以在Redmine中高效地进行项目管理,跟踪问题解决过程,并改善团队协作流程。

    如何在局域网安装Redmine(原创)

    通过以上步骤,即使是在局域网环境下,也可以顺利地安装并运行Redmine。这个过程不仅涉及软件的安装和配置,还需要对Redmine和服务器环境有深入的理解。作者通过分享自己的实践经验,帮助读者避免了许多常见问题,...

    redmine

    以下是关于Redmine的一些核心知识点: 1. **Ruby on Rails框架**:Redmine的开发基础是Ruby on Rails,这是一个全栈的Web应用框架,遵循MVC(模型-视图-控制器)架构模式。Rails强调“约定优于配置”,提供了一种...

Global site tag (gtag.js) - Google Analytics