【问题标题】:How can I implement a switch user function in Seam?如何在 Seam 中实现切换用户功能?
【发布时间】:2010-11-10 02:06:41
【问题描述】:

Spring security 提供了我在之前的项目中使用的切换用户功能。我查看了 Seam 2.2.0.GA 的文档并找到了一个用于此目的的 RunAsOperation 类,但是如何使用 Seam Security 实现切换用户功能(类似于 linux 中的su - <username>)?

【问题讨论】:

    标签: security spring seam switch-statement


    【解决方案1】:

    您可以使用 RunAs 块和 addRole 来完成它,就像:

    new RunAsOperation() {
            public void execute() {
                identityManager.createUser(user.getEmail(), user.getSenha(), user.getNome(), "");
                identityManager.grantRole(user.getEmail(), "ROLE_1");
                identityManager.grantRole(user.getEmail(), "ROLE_2");
            }
    }.addRole("admin").run(); 
    

    []S

    【讨论】:

    • 谢谢,马科斯。我需要的是切换到现有用户,例如从管理员用户切换到管理员用户,然后管理员可以充当管理员来执行管理员可以执行的操作,管理员可以根据需要切换回来。有什么建议吗?谢谢。
    • 您所需要的只是根据您的需要调整此代码。在您提到的特定情况下,您需要做的就是为管理员授予经理的授权。
    • 谢谢你,马科斯,我会努力的。
    【解决方案2】:

    @Marcos Maia 是对的。您不需要在 Seam 中切换用户来运行某些操作。您使用RunAsOperation 临时允许具有更高权限的角色。甚至可以通过以系统用户身份运行操作来绕过任何安全约束:

    new RunAsOperation(true) {
        public void execute() {
            // operations as system user
        }
    }.run();
    

    (注意构造函数中的true 值)。

    因此,如果您需要以其他用户身份执行某些操作,您绝对应该按照@Marcos Maia 的建议使用RunAsOperation

    【讨论】:

      猜你喜欢
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 2018-07-08
      • 1970-01-01
      • 2019-03-29
      • 1970-01-01
      • 2017-12-19
      • 2023-04-05
      相关资源
      最近更新 更多