【问题标题】:EXternal user Freeze or Locked out implementation外部用户冻结或锁定实施
【发布时间】:2015-04-11 08:44:29
【问题描述】:

我必须根据自定义逻辑冻结或锁定外部用户。一旦自定义逻辑条件设置为 true,我需要冻结或锁定该用户,以便在管理员解冻或解锁该外部用户之前,该用户无法登录。

我尝试使用 isPasswordlockout API 字段,但出现“字段不可重写”错误,因此我尝试使用冻结选项,但因为当用户已经登录并且 salesforce 顶点代码或触发器在该用户模式下运行时,我收到错误“CANNOT SELF FREEZE”不允许自我冻结。

我的要求是在用户执行某些操作时锁定或冻结该用户,并且根据我的自定义逻辑,该用户应该被锁定或冻结。 另外,我不能使用 site.login 方法进行 3 次无效尝试。所以除了一切皆有可能之外,这个选项就消失了吗?

我尝试使用 system.runas 方法,但这仅适用于测试方法。

有什么建议吗??

【问题讨论】:

    标签: salesforce apex force.com


    【解决方案1】:

    我假设您在收到“CANNOT SELF FREEZE”消息时尝试设置UserLogin.IsFrozen。

    您可以尝试找到一种方法来切换交易用户。一些选项:

    1. 使用未来或批处理方法。如果事务用户是您尝试冻结的用户,这可能会遇到同样的问题。
    2. 将用户记录添加到将被计划/批处理作业冻结的队列中。
    3. 使用 API 以其他用户身份执行冻结。见Freezing Users from Visualforce

    【讨论】:

    • 要切换到不同的事务用户,我需要通过不同的用户运行该代码,这是我无法做到的,因为 runas 方法仅在测试类中有效。其次,我尝试使用未来的方法,但同样的问题我没有运气。其次,我不能使用计划作业,因为根据我的自定义逻辑,用户需要立即停用或锁定。由于计划作业将在特定时间运行,因此不适合我的要求。通过ajax工具包,当我的页面执行时,我想我会遇到与事务用户相同的问题
    • 这很难看,但您可以安全地为其他用户存储刷新令牌或用户名/密码。使用这些存储的凭据,您可以调用 API 来执行锁定操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多