Redmine使用中文用户名实现统一认…

公司决定集成Redmine到OA系统中,初步调研了Redmine所支持的LDAP,自定义Auth,OpenID。由于公司的所有用户数据都在OA系统中,因此单独扯个统一认证的服务出来,实现虽然不是特别麻烦,但政治上牵扯太大,还是直接自定义一个认证最为合适。

一、中文用户名注册、登录
问题在于,公司的用户名都是直接使用的中文名字,直接拿到Redmine上注册,显示“无效的登录名”。

经过调研测试(例如往数据库里直接插入中文login字段等),中文能够正确显示,但还是无法登录,因此可判断不是编码问题。

查看Production.log,访问的是user.rb。打开代码,发现用户名做了如下正则表达式验证,注释掉重启即可:

# Login must contain letters, numbers, underscores only 

# validates_format_of :login, :with => /\A[a-z0-9_\-@\.]*\z/i

二、 自定义鉴权方法
请参考:http://www.redmine.org/projects/redmine/wiki/Alternativecustom_authentication_HowTo

配置方法基本上参考以上链接即可,有几个小地方需要说明一下:
  • onthefly_register似乎必须为true才能使用自定义Auth,置为false的时候,我登陆是没成功的。另外,置为true的时候,redmine创建的用户不包含密码信息,每次登陆都是通过第三方用户表来验证,没什么漏洞。
  • attr_firstname,attr_lastname不能为空,虽然表里面的属性是可为空,但当置为空时,自定义rb脚本会报错,大致就是拼接SQL出现了",,"的错误,遗憾的是完全不会写ruby,干脆都填上了
  • 仔细观察,第三方用户表名是写死在rb的SQL拼接语句里面的,感觉很不爽,但是不会写ruby,就这样吧。

也不知道有没有人看,如果有会写ruby的,欢迎补充。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值