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