设置会话有效期及自动续期

用户登录门户后,系统默认12小时过期。用户希望实现登录后,无操作10分钟则退出登录。目前会话过期后,不能跳转到登录页,访问会报401的错。

做法如下:通过在企业门户中定义新的 app.m,重新注册 login 的 authentication 插件和服务的 authentication 插件,设置新的有效期及自动续期。

定制企业门户

参考《门户定制》文档,定制企业门户。打开企业门户 IDE,切换到代码页,在“门户自定义”组件服务端目录 model/service/comp/portalConfig 下新建一个目录 plugins,用于存放插件配置文件

注册 login 的 authentication 插件

在 model/service/comp/portalConfig/plugins 目录下新建一个目录 ,目录名可以自定义,例如:login,在这个目录下新建一个文件 app.m,在 app.m 中添加如下代码,其中

  • expire:会话有效期,不能小于300(单位:秒)
  • auto_refresh_session:自动续期
  • order:执行顺序,越大越靠后执行,会覆盖前面的设置

<?xml version="1.0" encoding="UTF-8" ?>
<service order="999" target="kong2">
    <plugin name="authentication" enabled="true" api_name="login">
        <app_key>{{.Env.API_KEY}}</app_key>
        <app_secret>{{.Env.API_SECRET}}</app_secret>
        <expire>600</expire>
        <redis_timeout>{{.Env.AUTHENTICATION_REDIS_TIMEOUT}}</redis_timeout>
        <redis_host>{{.Env.AUTHENTICATION_REDIS_HOST}}</redis_host>
        <redis_port>{{.Env.AUTHENTICATION_REDIS_PORT}}</redis_port>
        <redis_password>{{.Env.AUTHENTICATION_REDIS_PASSWORD}}</redis_password>
        <auto_refresh_session>true</auto_refresh_session>
    </plugin>
</service>

设计效果,如下图所示

1719899344205

注册所有服务的 authentication 插件

在 model/service/comp/portalConfig/plugins 目录下新建一个目录,目录名可以自定义,例如:login2,在这个目录下新建一个文件 app.m,在 app.m 中添加如下代码,其中

  • expire:会话有效期,不能小于300(单位:秒)
  • auto_refresh_session:自动续期
  • order:执行顺序,越大越靠后执行,会覆盖前面的设置

<?xml version="1.0" encoding="UTF-8" ?>
<service order="100" target="kong2" tags="registerServices" loop="{{@getRegisteredServices()@}}">
    <name>{{@getItemData(serviceName)@}}</name>
    <request_path>/{{@getItemData(serviceName)@}}</request_path>
    <preserve_host>false</preserve_host>
    <strip_request_path>true</strip_request_path>
    <upstream_url>{{@getItemServiceUrl(serviceName)@}}</upstream_url>
    <plugin name="authentication" enabled="true">
        <app_key>{{.Env.API_KEY}}</app_key>
        <app_secret>{{.Env.API_SECRET}}</app_secret>
        <expire>600</expire>
        <admin_users>system</admin_users>
        <silent_mode>true</silent_mode>
        <auto_refresh_session>true</auto_refresh_session>
    </plugin>
</service>

设计效果,如下图所示

1719899570958

发布门户,用户重新登录

依次点保存、提交并更新、发布门户应用。

重新登录企业门户后,打开浏览器的开发人员工具,在应用中查看 Cookie 中的 user_session 的有效期(浏览器里面显示的是零时区时间),如下图所示

图 3

用户操作,接近到期时间,系统自动续期(浏览器里面显示的是零时区时间),如下图所示

图 4

results matching ""

    No results matching ""