用户注销user_session立即失效

默认的用户登录后user_session的失效时间是8个小时,如果要立即失效需要通过redis记录状态

一. 租户管理员登录控制台,在应用/服务管理中找到门户应用,点击更多,找到定制管理打开开启定制

二. 开启定制成功后切换到架构,从市场中选择redis模版组件

三. 把redis组件拖放到架构中,服务名填写redis,点确定,然后点ide的保存,进行ide重启

四. ide重启后,切换到代码在model/service/main/deplay下的dev.def.xml和production.def.xml文件中添加redis组件的属性配置和引用

属性配置如下:

        <property value="1000" name="redis_timeout" env="AUTHENTICATION_REDIS_TIMEOUT">
            <label label="redis_timeout"/>
        </property>


        <property value="${redis.redisServiceAddress}" name="redis_host" env="AUTHENTICATION_REDIS_HOST">
            <label label="redis_host"/>
        </property>

        <property value="${redis.redisAuth}" name="redis_password" env="AUTHENTICATION_REDIS_PASSWORD">
            <label label="redis_password"/>
        </property

引用如下:

<use name="redis" optional="true" instance="comp.redis"/>

完整的配置如图:

五. 保存文件,发布运行时,发布成功后就有了状态,注销的时候user_session就会立即失效,而且也可以从后端调用注销

需要注意的是这样配置后默认一个账户只能在一个地方登录,后登录的会踢掉前面登录的账户,如果要设置一个账户可以同时登录多台设备,可以通过配置authentication插件中login和logout两个api的session_account_mode_redis参数值实现 这个参数的值有三个选择,默认是replace

    replace: 后登录的是踢掉前面登录的账户,开启redis后默认为replace模式
    refuse: 后登录的账户禁止登录,必须注销前面登录的账户
    multiply: 支持一个账户登录多台设备

如图配置如下:

  1. 打开门户的ide切换到代码,在model/service/main下创建一个目录,目录名可以自己定义,如redislogout;在创建的目录下创建一个app.m文件

  1. 在创建的app.m中重写authentication插件中login和logut两个api的参数,重写的时候需要注意默认的参数也要添加上,默认的参数可以在model/service/comp/entryinit/login和model/service/comp/entryinit/logout目录下的app.m中看authentication插件中的定义,如下是login中默认的

app.m中重写如下,order是设置优先级:

  1. 再加上需要的session_account_mode_redis参数配置,如下:
<?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>
        <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>
        <session_account_mode_redis>multiply</session_account_mode_redis>
    </plugin>
    <plugin name="authentication" enabled="true" api_name="logout">
        <app_key>{{.Env.API_KEY}}</app_key>
        <app_secret>{{.Env.API_SECRET}}</app_secret>
        <admin_users>system</admin_users>
        <silent_mode>true</silent_mode>
        <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>
        <session_account_mode_redis>multiply</session_account_mode_redis>
    </plugin>
</service>
  1. 保存文件,发布运行时即可

results matching ""

    No results matching ""

    results matching ""

      No results matching ""