1. 问题描述编辑
2. 解决方案编辑
3. 实现原理编辑
内置SHA加密:用户输入的密码默认经过SHA加密,再和数据库中的密码进行匹配;
自定义密码加密:用户输入的密码经过自定义加密规则进行加密,再和数据库中的密码进行匹配,具体方法:String encode(String originText);//入参是明文字符,返回结果是密文字符;
自定义密码加密中,用户输入密码后提交,报表服务器会调用shouldIgnoreUsername()方法判断调用encodePassword(clientPassword)和encodePassword(String clientPassword, String clientUsername)中的哪一个密码验证方法,如果shouldIgnoreUsername()返回true(默认返回true),则调用encodePassword(clientPassword)方法,忽略用户名,如果返回false,则调用encodePassword(String clientPassword, String clientUsername),将用户名加入到密码加密中,然后再根据密码验证方法来判断数据库中密码和用户输入的匹配情况,相同返回true,否则返回false。
4. 自定义密码加密示例编辑
9.0及以前的版本,同步数据集中密码可以选择“内置MD5加密”,而在FR10.0中取消了默认的MD5加密。
若用户的工程是9.0升级到10.0的,而在升级之前用户同步采用的是默认内置MD5加密或者用户就想使用MD5加密方式,又该如何处理呢?
1)下载MD5加密类
现提供现成的MD5加密类,点击下载之后,将类放于%FR_HOME%\webroot\WEB-INF\classes\com\fr目录下
2)平台设置
在平台的用户同步数据集>加密方式>自定义加密类中选择MD5加密类即可,如下图:
3)支持用户名加密
若用户需要的是【用户名+密码】的方式进行自定义加密,请使用文件:decision.zip,使用方法同上。