|
|
|
JSF+Spring Security+Hibernate, доступ к SecurityContextHolder из Facelet
|
|||
|---|---|---|---|
|
#18+
Всем привет! Передо мной стоит задача сделать простенькую классическую конструкцию - регистрация, авторизация, просмотр списка товаров, создание своего товара. Сложность для меня заключается в том, что обязательно надо использовать ранее незнакомую мне технологию JSF -так сказала партия такое вот тестовое задание) Что я сделал на данный момент и в чем именно мой вопрос: 1) Авторизацию я сделал на Spring Security. Код: java 1. у меня свой - реализовал интерфейс Код: java 1. помимо стандартных имя/пароль в сесси храню ID авторизованного пользователя. 2) Описание базы. Всего две таблички, пользователи и товары, товары к пользователям находятся в отношении Many To One. Связка идет по полю ownerID таблицы товаров - у каждого товара - свой заказчик, ownerID=ID заказчика, либо 0, если товар создан кем-то, но никто его пока не заказал. 3) Как можно сделать на серлетах/JSP: - создание товара : JSP с формой заполнения инфы о товаре, кнопка на которую повешен AJAX запрос к сервлету, в котором в базу записываю инфу, а ownerID это ID авторизованного пользователя, которое вытаскивается как-то так: Код: java 1. 2. 3. - просмотр свободных товаров : динамически создать табличку в JSP, заполнив ее запросом вида Код: sql 1. - просмотр своей корзины товаров : динамически создать табличку в JSP, заполнив ее запросом вида Код: sql 1. Вопросы - 1) в Facelet-е непонятно как обращаться к Код: java 1. , чтобы вытащить ID автризованного пользователя, а потом уже вытакивать по ID его товары. Где- то нагугливал, что необходимо создать бин, который уже умеет(??) обращаться SecurityContextHolder, оттуда делать Hibernate запросы? там же динамически создавать view объект, например HtmlPanelGroup и в Facelet-е обращаться как-то так Код: html 1. . Пример здесь . Там мне непонятно как инициализировать этот бин - при обращении с фейслета сам что ли создается? И умеет ли он обращаться к SecurityContextHolder? Я так понял,он доступен всем, кто видит ServletContext. И самое главное, в пункте №3 я указал разные сценарии, на каждый из них свой бин создавать? Типа бин для корзины своих товаров, бин для свободных товаров? 2) Вот вытащил я список свободных товаров, у которых ownerID=0. Как к этой ссылке привязать ID товара, чтобы по нажатию, например, на чекбокс, я мог потом вытащить айдишники всех чекнутых и POST запросом(????) на некий сервлет привязать выбранные товары к авторизованному пользователю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2013, 08:06:07 |
|
||
|
JSF+Spring Security+Hibernate, доступ к SecurityContextHolder из Facelet
|
|||
|---|---|---|---|
|
#18+
BaurzhanS , тоже сейчас разбираюсь в связке JSF + Spring security. В LoginBean создай метод getAuthentication(): Код: java 1. 2. 3. И через него можно получить параметры авторизированного пользователя. Например имя можно получить так: Код: html 1. BaurzhanS а у тебя в этой связке работает Spring security tag? Потому что у меня с этим проблема. То есть попробуй вот так: Код: html 1. 2. 3. 4. 5. 6. Кстати видел еще пример что выводили например имя через тег authentication: Код: html 1. 2. 3. Проверь пожалуйста работает ли у тебя тег authorize, потому что у нас с тобой будет общая беда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2013, 14:58:20 |
|
||
|
JSF+Spring Security+Hibernate, доступ к SecurityContextHolder из Facelet
|
|||
|---|---|---|---|
|
#18+
Я не использую теги спринг-секьюрити в Facelet-е, у меня там просто форма с повешенным на нее POST запросом на j_spring_security_check. Все разрешения у меня прописаны в файле app-security.xml (который, в свою очередь прописан в web.xml) и имеют вид (кнопка SRC не работает, поэтому неформатированный код) <?xml version="1.0" encoding="UTF-8"?> <beans:beans xmlns=" http://www.springframework.org/schema/security" xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xmlns:beans=" http://www.springframework.org/schema/beans" xmlns:context=" http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <http auto-config="true" use-expressions="true"> <!-- <intercept-url pattern="/index.html" access="permitAll"/> --> <intercept-url pattern="/index.html" access="hasAnyRole('admin','user')"/> <form-login login-page="/login.html" default-target-url="/index.html" authentication-failure-url="/login.html"/> <logout logout-success-url="/login.html"/> </http> <authentication-manager alias="authenticationManager"> <authentication-provider user-service-ref='UserDetailServiceImpl'> </authentication-provider> </authentication-manager> <context:annotation-config /> <beans:bean id="UserDetailServiceImpl" class="com.mypackage.UserDetailServiceImpl"> </beans:bean> </beans:beans> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2013, 16:20:10 |
|
||
|
JSF+Spring Security+Hibernate, доступ к SecurityContextHolder из Facelet
|
|||
|---|---|---|---|
|
#18+
BaurzhanS , ну это понятно но смысл подключения JSF+Spring Security, как раз в том чтобы использовать тег Spring Security на JSF странице. Потому что ограничение в файле app-security.xml это всего лишь ограничение по доступу через URL, как таковой связи JSF+Spring Security тут нет. У меня тоже так работает но это не связка а просто использование отдельно. Подключаются теги Spring Security к JSF так . Попробуйте, если вам это интересно, может быть у вас получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2013, 18:08:39 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=206&tid=2128445]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
92ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 427ms |

| 0 / 0 |
