【仅供内部供应商使用,不提供对外解答和培训】
【仅供内部供应商使用,不提供对外解答和培训】
目前决策平台提供了3种认证方式,分别是:内置认证、LDAP认证和HTTP认证,但是在某些情况下我们希望能扩展出自己的认证方式,这个时候就需要用到认证接口了。
public interface AuthenticateObjectType extends XMLable { public static final String XML_TAG = "AuthenticateObjectType"; public boolean authentication(Authentication authentication) throws Exception ; public boolean authenticationWithoutPassword(); public String markType(); }
实现新认证方式的时候,就需要实现这个接口,并将实现类通过AuthenticateObjectTypeBuilder#register方法进行登记。
/** * 认证方式 * @example * FS.Plugin.AuthenticateTypePool.push({ * defineTypeString : function () { * return 'weibo' * }, * defineTitleString : function () { * return '微博'; * }, * defineRowHeightNumber : function () { * return 21; * }, * defineUI : function () { * return [{}, {}, {type: 'text', widgetName: 'weibo', watermark: 'weibo'}]; * }, * saveDataSync : function (container) { * FS.Async.ajax({ * url : '', * data : {} * }); * }, * populateData : function (container) { * * } * }); */ FS.Plugin.AuthenticateTypePool = [];
需要通过PlateProvider接口,将自定义的认证初始化,示例代码如下:
public class CasAuthenticatePlate extends DefaultPlate { @Override public void initData() { super.initData(); AuthenticateObjectTypeBuilder.register(CasConstants.MARK_TYPE, CasAuthenticateObjectType.class); } @Override public String[] getPlateJavaScriptFiles4WebClient() { return new String[]{ "/com/fr/solution/plugin/auth/cas/web/auth.cas.js" }; } }
这段代码做了两件事,一是注册了自定义认证方式的Java类,二是引入了自定义认证web端设置界面的相关代码。
完整的示例代码参见这里:https://git.fanruan.com/fanruan/demo-auth-cas
注意:配置的保存还没有实现
1 Comment
刘常禄
没有看懂,下面的完整代码打不开。