设置会话有效期及自动续期
用户登录门户后,系统默认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>
设计效果,如下图所示
注册所有服务的 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>
设计效果,如下图所示
发布门户,用户重新登录
依次点保存、提交并更新、发布门户应用。
重新登录企业门户后,打开浏览器的开发人员工具,在应用中查看 Cookie 中的 user_session 的有效期(浏览器里面显示的是零时区时间),如下图所示
用户操作,接近到期时间,系统自动续期(浏览器里面显示的是零时区时间),如下图所示