如何在Seam中实现切换用户功能?

时间:2010-11-10 02:06:41

标签: security spring seam switch-statement

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

2 个答案:

答案 0 :(得分:2)

您可以使用RunAs块并添加角色来实现它,就像:

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

答案 1 :(得分:1)

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

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

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

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