Как реализовать функцию переключения пользователя в Seam? - PullRequest
1 голос
/ 10 ноября 2010

Spring security предоставляет эту пользовательскую функцию коммутатора, которую я использовал в предыдущих проектах. Я проверил документ Seam 2.2.0.GA и нашел для этого класс RunAsOperation, но как я могу реализовать пользовательскую функцию переключения (что-то вроде su - <username> в linux), используя Seam Security?

Ответы [ 2 ]

2 голосов
/ 10 ноября 2010

Вы можете использовать блок 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

1 голос
/ 10 ноября 2010

@ Маркос Майя прав. Вы не переключаете пользователей в Seam для выполнения определенных операций. Вы используете RunAsOperation, чтобы временно разрешить более высокие привилегии с ролями. Есть даже способ обойти любые ограничения безопасности, запустив операции от имени системного пользователя:

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

(обратите внимание на значение true в конструкторе).

Так что, если вам нужно выполнить какие-либо операции от имени другого пользователя, вам определенно следует использовать RunAsOperation, как предложено @Marcos Maia.

...