2014-08-28 4 views
1

У нас есть несколько порталов Портал-работодатель, Портал-сотрудник и Портал-администратор. Все три портала развертываются отдельно. Все порталы соответствуют шаблону spring-mvc. И мы использовали весеннюю безопасность и использовали openId для входа и выхода из системы.Как сделать олицетворение весной

Теперь мы хотим предоставить админ-портал, что администратор может выдавать себя за сотрудника и работодателя и делать что-то от их имени.

Может ли какой-либо орган с предыдущим опытом руководствоваться моим способом работы над ним или может поделиться любой хорошей статьей, которую я могу прочитать, чтобы получить хорошее знание.

Спасибо,

+0

http://docs.spring.io/spring-security/site/docs/3.2.5.RELEASE/reference/htmlsingle/#runas – sodik

ответ

0

Из Вашего вопроса, это не звучит, как вы действительно хотите «runAsManager».

Одним из способов было бы использовать что-то вроде «олицетворяющего» метода, который сам должен быть обеспечен, конечно, возможно, используя аннотации безопасности уровня метода.

Для этого, вы можете использовать что-то вроде:

@PreAuthorize("hasRole('ROLE_ADMIN')") 

По существу, то, что вам нужно сделать, это создать объект аутентификации и заполнить контекст безопасности (ThreadLocal) с этим.

Что-то вроде:

Authentication other = createAuthentication(someUsername); //Implement this 
SecurityContextHolder.getContext().setAuthentication(other); 

я могу увидеть привлекательность этого подхода, но, конечно же, является ли это хорошая идея, зависит от того, что вы позволяете админы делать от имени пользователя. Потратьте свои деньги? Смотрите их электронные письма? Если прецедент действителен, по крайней мере, проверите этот вид операции.

Как только вы выдаете себя за другого пользователя, текущий пользователь должен будет выйти из системы и снова войти в систему, чтобы вернуться к своей учетной записи.

+0

Нужно ли мне накладывать на портал работника и работодателя через портал администратора, иначе мы можете войти на портал работодателя? –

+0

Если вы используете один и тот же фреймворк и имеете один и тот же источник пользователей, не могли бы вы позволить администратору войти в два других портала, а затем предоставить метод в каждом из них, чтобы стать менее привилегированным пользователем? Если да, то я не думаю, что вам нужно наложить, нет. Вы предоставляете функциональность в приложениях работодателя/сотрудника одним методом MVC и защищенным методом обслуживания. –

Смежные вопросы