Проблема безопасности входа / выхода из Spring Spring - PullRequest
1 голос
/ 04 февраля 2011

Я использую Spring Security для своего приложения.Ниже приведены некоторые строки из моего applicationContext-Security.xml для установки доступа в качестве ROLE_USER для / предложений и / добавления ссылок и без фильтров для / списка ссылок.

<intercept-url pattern="/list*" filters="none" />
<intercept-url pattern="/offers**" access="ROLE_USER" />
<intercept-url pattern="/add/**" access="ROLE_USER" />

Я хочу показать ВХОД ссылка, когда пользователь не вошел в систему и когда пользователь входит в систему, эта ссылка должна быть заменена на LOGOUT .Для этого я попытался следующий код на моей странице JSP.

<security:authorize ifNotGranted="ROLE_USER">  
  <a href="login.jsp">Login</a>
</security:authorize>

<security:authorize ifAnyGranted="ROLE_USER">
  Welcome <security:authentication property="principal.username"/>! &nbsp; 
| <a href="logout.htm">Logout</a>     
</security:authorize>

Когда я нахожусь на / список ссылки, он показывает ссылку "LOGIN".После входа в систему, если пользователь перенаправлен на / предлагает или / добавить ссылку, он показывает «Добро пожаловать! Имя пользователя | ВЫХОД», который работает в соответствии с требованием.Но проблема в том, что когда пользователь входит в систему и перенаправляется на страницу / список, он также показывает «ВХОД» (ПОЛЬЗОВАТЕЛЬ уже вошел в систему) В нем должно отображаться «Добро пожаловать!мне в этом сценарии, что я должен сделать, чтобы заставить его работать?Заранее спасибо.

1 Ответ

4 голосов
/ 04 февраля 2011

Я нашел решение, может быть полезным для тех, кто ищет тот же вопрос.Удалите строку ниже из XML-файла безопасности.

<intercept-url pattern="/list*" filters="none" />

И код будет работать.Это потому, что когда вы указываете filters = "none" для определенной ссылки, ваш контекст не возвращает предоставленные права доступа к вашей странице jsp.Поэтому, когда мы перенаправляем на страницу списка после входа в систему, тег авторизации говорит, что он не авторизован как ROLE_USER и выполняет следующие строки,

<security:authorize ifNotGranted="ROLE_USER">  
  <a href="login.jsp">Login</a>
</security:authorize>

Так что просто удалите фильтр из этой ссылки.

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