找回密码
 立即注册

QQ登录

只需一步,快速开始

Eric.Liang 讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2018-12-4 14:12  /   查看:11815  /  回复:0
本帖最后由 Eric.Liang 于 2019-8-13 09:55 编辑

在活字格4.0版本中我们加入了第三方用户集成的概念,主要是为了方便大家可以将活字格开发的系统和其他第三方系统无缝对接,包括用户信息的集成以及单点登录的验证。
不过在发布之后,很多用户都不是很了解在活字格中除了我们已有的企业微信,微信公众号,AD域,Wyn BI的用户集成以外,其他系统的用户应该怎样集成到活字格的用户管理中。

本节课主要以泛微OA用户为例,使用连接SQL Server数据库的方式将泛微OA用户集成到活字格内部的用户管理中。

学习之前,建议大家先了解下我们官网帮助手册第三方安全提供程序的开发:查看

效果如下:
泛微用户集成.gif

从效果图中大家会发现,我是通过上传一个zip包,将用户集成到活字格中的,那么这个zip包要怎么生成呢?这个就需要大家具有一定的代码开发能力,需要编写C#代码去开发。

1.首先需要了解第三方用户集成的两种模式。
   InForguncyDatabase为活字格存储用户信息的一种方式,另一种方式为InMemoryCache
   InForguncyDatabase(类似于微信公众号集成,每有一个用户登录,将该用户添加到活字格用户管理中)
InMemoryCache(类似于企业微信,定时将企业微信中的用户,角色,组织结构等同步到活字格用户管理中)
  • InForguncyDatabase
    在这种模式下,当用户首次登录活字格网站时,活字格会将用户信息添加到活字格的用户服务数据库中。管理员需要将角色和组织分配给活字格中的用户。
    如果用户已被添加到活字格,则在原始应用程序中删除用户或用户属性更改,活字格将不会自动同步。
  • InMemoryCache
    在这种模式下,活字格站点将在启动时获得所有用户信息,用户信息包括用户名、用户属性、角色和组织。然后将用户信息缓存到站点的内存中。活字格将使用这些信息来设置权限和工作流等。

2.集成模式的切换以及逻辑代码的编写位置。
   1)如果需要切换集成模式,只需修改下图红框内的集成方式
image.png981721496.png
   2)InForguncyDatabase集成方式的逻辑代码

image.png682044677.png
   3)InMemoryCache集成方式的逻辑代码
image.png722801208.png

3.活字格用户管理对象(UserInformations),我们需要将从数据库中获取到的数据按照活字格要求的对象格式进行处理,返回给活字格即可完成用户管理的集成。
UserInformations对象,包括Organizations(组织结构),Roles(角色),Users(用户)
         image.png946524047.png

   1)Organizations对象,包括name(组织结构名称),SubOrganizations(子部门),Members(成员)
         image.png474636535.png
      a)SubOrganizations递归Organizations对象
      b)Members为OrganizationMember对象,包括User(用户名),IsLeader(是否领导),OrganizationRole(组织角色)
            image.png848363952.png

   2)Role对象,包括name(角色名称),Users(用户)
       image.png69276732.png
      a)Users为User对象,包括UserId(用户ID/用户名),FullName(全名),Email(邮箱),Properties(自定义属性,类似于性别,国家,联系电话等等)
          image.png537568969.png

   3)User对象,包括UserId(用户ID/用户名),FullName(全名),Email(邮箱),Properties(自定义属性,类似于性别,国家,联系电话等等),与角色中的User对象一致。
       image.png753497009.png

4.了解泛微用户管理组织结构
1)用户信息
       image.png513247985.png
   2)组织机构信息
       image.png421855468.png
   3)角色信息
       image.png336565856.png
   4)角色成员信息
         image.png539834899.png


5.了解了第三部分活字格内置的用户对象之后,我们就需要在C#逻辑代码中将获取的数据进行处理。本工程是以连接数据库获取数据为例,如果第三方用户数据库不方便提供的话也可以通过调用第三方接口去获取,两者均可。
   1)重写UserInformations方法
       image.png15377806.png
   2)GetUser获取用户信息方法
       image.png157345885.png
   3)GetRoles获取角色信息方法,先添加角色,再添加对应用户到角色成员对象中
       image.png795250549.png
   4)GetDepartment获取组织机构信息,先添加主部门,再使用递归将子部门添加到主部门下。
       image.png78219603.png
   5)WeaverUser用户类和OrganizationInfo组织结构类
       image.png811353759.png    6)重写VerifyUser方法,保证集成过来的用户可以自动登录。
       image.png255596617.png

6.当你按照上述的代码逻辑将你的数据解析返回userInfo之后,代码层面的操作就已经完全结束了。右键你的C#工程,生成/重新生成即可在你的工程目录下生成一个dll文件。
    image.png319918822.png

7.在Debug目录下,有对应的生成的dll文件,将该文件压缩成zip,即可上传至用户管理
image.png507175292.png

8.因为每修改一次代码都需要去重新生成dll文件,需要重新压缩,很繁琐,因此我这里提供了一个exe的执行文件,配置C#工程,在重新生成dll之后自动压缩dll文件。
   1)拷贝ZipSecurityProvider.exe至自己的C#工程文件中
         image.png361732787.png
   2)右键工程设置属性
       image.png121665038.png
    3)添加代码
       image.png962808532.png
  1. "$(ProjectDir)ZipSecurityProvider.exe" "$(ProjectDir) "
复制代码
    这样,每次重新生成dll之后会自动在bin文件夹中生成压缩zip包      image.png216350707.png

9.将压缩后的zip包上传用户管理中,就可以完成第三方用户的集成啦。


10.通过集成第三方的用户,我们在活字格中就可以实现OA管理员去管理后台的用户。
将定时同步设置为半天,活字格外联用户,组织结构和角色数据表,在活字格内部进行数据的增删改查,当活字格修改了用户信息之后,外联数据库的数据将被修改,定时同步时也就会将修改的数据同步到用户管理中。这不正好完成了我们的自定义用户管理的功能么。

其实第三方用户集成的应用方面还有很多,也希望大家可以通过第三方用户集成功能将自己的系统和活字格更加灵活的应用到一起。

关于第三方用户集成的视频可以看这里:http://live.vhall.com/775957103

C#工程文件见附件。





WeaverPasswordSecurityProvider.zip

453.95 KB, 下载次数: 95

售价: 10 金币  [记录]

安全提供程序

WeaverPasswordSecurityProvider.zip

485.38 KB, 下载次数: 591

C#工程文件

评分

参与人数 3满意度 +7 收起 理由
sz_xd + 5
lookice + 1 很给力!
jerry8124995 + 1 函数代码不全,缺少GetTable

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部