设置会话有效期及自动续期
场景描述
用户登录门户后,系统默认12小时过期。用户希望实现登录后,无操作10分钟则退出登录。目前会话过期后,不能跳转到登录页,访问会报401的错。
实现思路
将会话有效期调整为10分钟,并设置自动续期。
实现步骤
通过在企业门户中定义新的app.m,重新注册login的authentication插件和服务的authentication插件,设置新的有效期及自动续期
1 打开企业门户ide
参考《开发手册-基础篇-桌面端门户-门户定制》文档,打开企业门户ide,切换到代码页
2 注册login的authentication插件
在model/service/main目录下新建一个目录,目录名可以自定义,例如:login,在这个目录下新建一个文件app.m,在app.m中添加如下代码,其中
- expire是有效期的值,不能小于300(单位:秒)
- auto_refresh_session是自动续期
- order越大越靠后执行,会覆盖前面的设置
<service order="999" target="kong2">
<plugin name="authentication" enabled="true" api_name="login">
<% raw %> <app_key>{{.Env.API_KEY}}</app_key><% endraw %>
<% raw %> <app_secret>{{.Env.API_SECRET}}</app_secret><% endraw %>
<expire>600</expire>
<% raw %> <redis_timeout>{{.Env.AUTHENTICATION_REDIS_TIMEOUT}}</redis_timeout><% endraw %>
<% raw %> <redis_host>{{.Env.AUTHENTICATION_REDIS_HOST}}</redis_host>
<redis_port>{{.Env.AUTHENTICATION_REDIS_PORT}}</redis_port><% endraw %>
<% raw %> <redis_password>{{.Env.AUTHENTICATION_REDIS_PASSWORD}}</redis_password><% endraw %>
<auto_refresh_session>true</auto_refresh_session>
</plugin>
</service>
效果如下图所示
3 注册所有服务的authentication插件
在model/service/main目录下新建一个目录,目录名可以自定义,例如:login2,在这个目录下新建一个文件app.m,在app.m中添加如下代码,其中
- expire是有效期的值,不能小于300(单位:秒)
- auto_refresh_session是自动续期
- order越大越靠后执行,会覆盖前面的设置
<?xml version="1.0" encoding="UTF-8" ?>
<% raw %>
<plugin name="authentication" enabled="true">
<% raw %>
</service>
效果如下图所示
4 发布门户,用户重新登录
依次点保存、提交并更新、发布门户应用。
重新登录企业门户后,打开浏览器的开发人员工具,在应用中查看Cookie中的user_session的有效期(浏览器里面显示的是零时区时间),如下图所示
用户操作,接近到期时间,系统自动续期(浏览器里面显示的是零时区时间),如下图所示