【发布时间】:2010-11-10 02:06:41
【问题描述】:
Spring security 提供了我在之前的项目中使用的切换用户功能。我查看了 Seam 2.2.0.GA 的文档并找到了一个用于此目的的 RunAsOperation 类,但是如何使用 Seam Security 实现切换用户功能(类似于 linux 中的su - <username>)?
【问题讨论】:
标签: security spring seam switch-statement
Spring security 提供了我在之前的项目中使用的切换用户功能。我查看了 Seam 2.2.0.GA 的文档并找到了一个用于此目的的 RunAsOperation 类,但是如何使用 Seam Security 实现切换用户功能(类似于 linux 中的su - <username>)?
【问题讨论】:
标签: security spring seam switch-statement
您可以使用 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
【讨论】:
@Marcos Maia 是对的。您不需要在 Seam 中切换用户来运行某些操作。您使用RunAsOperation 临时允许具有更高权限的角色。甚至可以通过以系统用户身份运行操作来绕过任何安全约束:
new RunAsOperation(true) {
public void execute() {
// operations as system user
}
}.run();
(注意构造函数中的true 值)。
因此,如果您需要以其他用户身份执行某些操作,您绝对应该按照@Marcos Maia 的建议使用RunAsOperation。
【讨论】: