Page tree
Skip to end of metadata
Go to start of metadata

使用场景

       默认情况,smartbi电子表格设计器登录是以用户名密码方式登录,但有些项目可能需要譬如动态密码验证,验证时除了用户名/密码,还有个动态密码,或者登录时还需要输入手机验证码。

那如果遇到类似上面情况时,smartbi电子表格设计器实际上预留了登录验证接口(语言:c#):

        现场只要创建一个类库,实现上面接口,就可实现自定义的验证插件,产品内置了cas登录验证插件(见:http://wiki.smartbi.com.cn/pages/viewpage.action?pageId=21955564)。自定义的插件dll只要放在smartbi电子表格设计器的安装目录的plugin目录,即可在设置界面选择这个插件作为登录插件。

实现及调试方法

       以下从创建项目(1,2步),配置项目及添加必要引用(3,4,5步),实现接口(6)以及最后的调试(7)几个方面说明,其中3,4,5步主要为了能调试项目,很关键,现场要调试提供的示例程序也需要确认和做这几步。示例项目(使用VisualStudio12创建):ExcelAuthPluginExample.rar

  1. 开发机器上需要有c#开发工具(譬如Visual Studio),安装了excel以及smartbi电子表格设计器
  2. 使用Visual Studio创建普通的类库项目

     3. 右键项目,选择属性>调试,设置启动程序为excel

    4. 同时将输出路径设为smartbi电子表格设计器的安装路径/plugin目录下,这样才可以在调试环境调试你自定义的登录验证插件。

    5. 添加依赖项目(见下图)

    6. 实现Smartbi.WebClient.Authentication.IAuthPlugin接口

    示例项目SmartbiExcelAuthPlugin含有两种实现:

    一种是动态密码验证DynamicVerificationAuth(登录时会弹出窗口让输入动态密码,因为依赖于扩展包中自定义验证方法,这个应用了是无法登录成功的,只是告知遇到类似情况该如何处理);

    一种是密码加密传输EncriptyAuth(就是登录时按项目约定加密方式加密密码再验证登录,这个示例的加密算法需要自行实现,还是以未加密方式登录),配置插件方法和http://wiki.smartbi.com.cn/pages/viewpage.action?pageId=21955564相同。

     示例中的类EncriptLoginServiceDynamicLoginService很关键,他们都有继承ServiceBase,这是excel设计器和smartbi服务器沟通(譬如调用其中的module)的主要实现方法。

    7. 直接启动项目调试,譬如示例项目SmartbiExcelAuthPlugin,这时候会在配置界面看到两个登录插件

        测试没问题了,就可以生成项目,将生成的dll(譬如示例项目就是:SmartbiExcelAuthPlugin.dll)分发出去给用户使用。用户配置方法和cas插件配置方法一样,就是将这个dll放到smartbi电子表格设计器安装路径的plugin目录。

示例项目:ExcelAuthPluginExample.rar

  • No labels