Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > проблема с Spring Security


Автор: carn 23.5.2012, 12:48
Люди, здравствуйте!
Есть две группы пользователей: admin и user.
Я хочу защитить страницы админа от пользоватетей, и страницы пользователей от админов.
И чтоб при авторизации в систему автоматически перебрасывало пользователя на его страницу (админа на страницу "admin", юзера, например на "user").
Вот текущий код:
Код

<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"
  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.0.xsd">
    <http auto-config="true" use-expressions="true" access-denied-page="/accessDenied.do">
        <intercept-url pattern="/index.do" access="permitAll"/>
        <intercept-url pattern="/admin/**" access="hasRole('ROLE_ADMIN')"/>
        <intercept-url pattern="/user/**" access="hasRole('ROLE_USER')" />
        <form-login login-page="/index.do"  default-target-url="/redirect.do" authentication-failure-url="/accessDenied.do"/>
        <logout invalidate-session="true" logout-success-url="/index.do" logout-url="" />
    </http>
 
   <beans:bean id="myUserService" class="security.UserService" />
 
    <authentication-manager alias="authenticationManager">
        <authentication-provider user-service-ref="myUserService" />
      </authentication-manager>
   </beans:beans>

Помогите, пожалуйста, кто знает.
Заранее спасибо!

Автор: MisterCleric 23.5.2012, 13:04
Привет.

С первого взгляда конфигурация выглядит хорошо.
Что тебе осталось сделать:
1. Либо на JSP, которая получается после /redirect.do прописать
Код

<sec:authorize access="hasRole('ROLE_ADMIN')">
   <c:redirect url="/admin" />
</sec:authorize>

2. Либо реализовать подобную логику редиректа в конфиге твоего Struts на базе результата action

Вроде все. Реализовать логику redirect с помощью одного Spring Security конфига не возможно.

Автор: carn 23.5.2012, 13:25
Цитата(MisterCleric @ 23.5.2012,  13:04)
Привет.

С первого взгляда конфигурация выглядит хорошо.
Что тебе осталось сделать:
1. Либо на JSP, которая получается после /redirect.do прописать
Код

<sec:authorize access="hasRole('ROLE_ADMIN')">
   <c:redirect url="/admin" />
</sec:authorize>

2. Либо реализовать подобную логику редиректа в конфиге твоего Struts на базе результата action

Вроде все. Реализовать логику redirect с помощью одного Spring Security конфига не возможно.

Спасибо за подробный ответ!
На данный момент я в контроллере redirect.do определяю типа пользователя и перекидываю на нужную страницу. Это нормально? )
Просто на стартовой странице администратора добавить это (ну и для пользователя тоже):

<sec:authorize access="hasRole('ROLE_ADMIN')">
   <c:redirect url="/admin" />
</sec:authorize>

Я правильно понял?

Автор: MisterCleric 24.5.2012, 01:09
Цитата

Это нормально?

Думаю, да.
Можешь показать, что ты там пишешь в контролере?
Если здесь у тебя все работает ОК, то на JSP ничего добавлять не надо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)