没有活动的postgresql锁定用户

没有活动的postgresql锁定用户,sql,postgresql,pgagent,Sql,Postgresql,Pgagent,我必须锁定前三个月不工作的用户。 我是个新手! 我看了文档,我不认为我可以通过配置来做到这一点。 (这是真的吗?) 因此,我必须开发一个日常过程(使用pgagent?),进行查询,然后锁定用户,但我找不到包含此信息的系统表。 你能帮我吗? 谢谢 Gian没错,上次登录的时间不记录在数据库中,只记录在日志文件中(如果日志记录配置适当) 我认为如果没有使用PostgreSQL的应用程序的帮助,您将无法实现这一点。我可以想到两种可能性: 创建应用程序记录上次登录时间的表。然后,您的定期作业可以使用该

我必须锁定前三个月不工作的用户。 我是个新手! 我看了文档,我不认为我可以通过配置来做到这一点。 (这是真的吗?) 因此,我必须开发一个日常过程(使用pgagent?),进行查询,然后锁定用户,但我找不到包含此信息的系统表。 你能帮我吗? 谢谢
Gian

没错,上次登录的时间不记录在数据库中,只记录在日志文件中(如果日志记录配置适当)

我认为如果没有使用PostgreSQL的应用程序的帮助,您将无法实现这一点。我可以想到两种可能性:

  • 创建应用程序记录上次登录时间的表。然后,您的定期作业可以使用该表来决定是否应该锁定用户

  • 创建如下函数:

    CREATE OR REPLACE FUNCTION expire_me() RETURNS void
       LANGUAGE plpgsql SECURITY DEFINER
       SET search_path = 'pg_catalog' AS
    $$BEGIN
       EXECUTE 'ALTER ROLE ' || session_user || ' VALID UNTIL ''' ||
               (current_timestamp + INTERVAL '3 months') || '''';
    END;$$;
    
    然后,应用程序在用户登录后立即调用该函数。如果下次登录时间超过三个月,用户将被锁定


不幸的是,PostgreSQL中没有“登录触发器”这样的东西,这会使操作变得更简单。

谢谢Laurenz,但为了数据库的安全,无论应用程序如何,我都应该这样做。。。也许我可以用PAM之类的东西对用户进行身份验证(……但我不知道这是一台赢机器)。。干杯,你是对的;在这种情况下,最好使用数据库之外的解决方案。嗯…我认为在win上不提供PAM。。。有没有人有过在windows上使用类似规则配置身份验证系统的经验??