【仅供内部供应商使用,不提供对外解答和培训】
【仅供内部供应商使用,不提供对外解答和培训】
该文档为《跟我一起学代码》系列视频课程第二课的配套专题文档。视频课程主要向开发者剖析了产品自身的登录验证的实现过程和模板权限的判断过程。并以代码的形式向开发者分享了一些特殊的扩展登录方法和模板集成需求的实现方案。
登录扩展:主要是指在使用决策系统自带的登录页、远程设计登录、原生APP登录、Ajax单点登录 这几个产品标准的登录接口时,对产品本身登录过程的一个干预和改造。从而实现,登录信息预处理、认证方式变更,增加、甚至时多种认证方式共存的场景。
模板集成:主要指在开启决策系统模板权限的情况下,第三方系统如何在不做用户集成的情况下,对决策系统的模板访问做权限控制的场景。
(一)、相关链接
视频课程链接:https://bbs.fanruan.com/course-204.html
(二)、产品登录逻辑可借鉴的部分
通过用户ID获取用户的认证控制对象:
AuthenticController authenticController = ControllerFactory.getInstance().getAuthenticController( userID );
其中ControllerFactory是一个单例对象,该单例提供了诸多常用的控制器的获取方法,通过动态代理、反射等方式替换掉单例对象可以
实现对相关逻辑的干预。
根据用户的类型获取对于的认证Passport对象
FSConfig.getInstance().getPassport( OperationType );
早期版本中是不区分用户创建类型的。那么是可以直接通过
FSConfig.getInstance().getPassport();
获取到决策系统设置的认证方式的
同样的这个FSConfig也是一个单例,可以通过对他进行修改,从而实现很多配置信息的干预。
注册一种新的模板鉴权类型:
TemplateAuthType.registerTemplateAuthType(TemplateAuthType templateAuthType)
注册之后的权限类型全部保存在TemplateAuthType的Map<Integer, TemplateAuthType> typeMap这个静态成员中。
产品请求在预处理鉴权时再通过TemplateAuthType.parse(决策平台配置的模板鉴权类型编号)获取到对应的TemplateAuthType实例。
那么也就是可以通过篡改 typeMap来实现对模板鉴权的干预和修改了。
对于所有根据请求信息进行某些逻辑处理的功能,只要是能够通过修改伪造请求头、参数、body实现对功能的干预的,都可以使用请求拦截替换当前请求的方式达到目的
免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。若作为商用一切后果责任由使用者自行承担。