【仅供内部供应商使用,不提供对外解答和培训】

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

一、特殊名词介绍

二、背景、场景介绍

LogInOutEventProvider主要用于在用户登录或登出时,给予用户对该行为进行监管处理的能力。

主要用于:登录登出的行为监听和消息推送。也用于登出时指向指定登录页

三、接口介绍

LogInOutEventProvider.java
package com.fr.decision.fun;

import com.fr.decision.fun.impl.AbstractLogInOutEventProvider;
import com.fr.decision.webservice.login.LogInOutResultInfo;
import com.fr.stable.fun.mark.Mutable;

/**
 * 用于监听登录登出事件的接口,使用的时候尽可能继承抽象类{@link AbstractLogInOutEventProvider}
 * Created by zhouping on 2018/12/13.
 */
public interface LogInOutEventProvider extends Mutable {

    String MARK_STRING = "LogInOutEventProvider";

    int CURRENT_LEVEL = 2;

    /**
     * 登录后事件
     *
     * @param result 登录结果
     */
    void loginAction(LogInOutResultInfo result);

    /**
     * 登出后事件
     *
     * @param result
     * @return 登录后跳转url,null/""则跳转登录页
     */
    String logoutAction(LogInOutResultInfo result);

}

LogInOutResultInfo.java
package com.fr.decision.webservice.login;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by zhouping on 2018/12/13.
 */
public class LogInOutResultInfo {
    private HttpServletRequest request;
    private HttpServletResponse response;
    private String username;
    private boolean result;

    public LogInOutResultInfo() {
    }

    public LogInOutResultInfo(HttpServletRequest request, HttpServletResponse response, String username, boolean result) {
        this.request = request;
        this.response = response;
        this.username = username;
        this.result = result;
    }

    public HttpServletRequest getRequest() {
        return request;
    }

    public void setRequest(HttpServletRequest request) {
        this.request = request;
    }

    public HttpServletResponse getResponse() {
        return response;
    }

    public void setResponse(HttpServletResponse response) {
        this.response = response;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public boolean isResult() {
        return result;
    }

    public void setResult(boolean result) {
        this.result = result;
    }
}

四、支持版本

产品线

版本

支持情况

备注

FR10.0支持10.0.3以后版本、10.0.3版本之前可以用LoginEventProvider
BI5.1支持
BI5.1.2支持
BI5.1.3支持

五、插件注册

plugin.xml
<extra-decision>
    <LogInOutEventProvider class="your class name"/>
</extra-decision>

六、原理说明

WebServiceActivator平台服务启动器启动时会读取插件中申明的LogInOutEventProvider接口实例,注册到LogInOutEvent.LOGIN/LOGOUT两个事件中。

当LoginResource中登录(仅限标准登录和验证码登录)、登出方法执行后,会触发相应的事件执行。

注:这套逻辑可以延用到开发者自己开发的登录登出插件中

七、特殊限制说明

勿使用logoutAction的result.getResponse的重定向,实现登录后跳转。因为登出请求本身是ajax请求

八、常用链接

demo地址:demo-login-out-event-provider

com.fr.decision.fun.AccessProvider

九、开源案例

免责声明:所有文档中的开源示例,均为开发者自行开发并提供。仅用于参考和学习使用,开发者和官方均无义务对开源案例所涉及的所有成果进行教学和指导。禁止用于任何商业用途,若作为商用一切后果责任由使用者自行承担。

open-JSD-7957

  • No labels