Разрешить ссылки и другие функции только для роли администратора - PullRequest
1 голос
/ 18 ноября 2011

Я разрабатываю простое веб-приложение, которое требует аутентификации.Я хотел бы, чтобы некоторые страницы JSP с некоторыми ссылками или функциями скрывались от обычных пользователей и были видны администраторам.Должен ли я поместить много утверждений if в мои страницы JSP?Или я должен поместить компонент, который выполняет этот контроль, в мои страницы JSP?

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

Ответы [ 2 ]

3 голосов
/ 18 ноября 2011

Это необходимо контролировать со стороны обзора.Вам не нужно помещать if операторов скриптлетами .Просто используйте taglibs для управления потоком.Например, JSTL:

<c:if test="${user.admin}">
    <input type="submit" name="delete" value="Delete" />
</c:if>

Здесь ${user} должен просто указывать на некоторый компонент, представляющий вошедшего в систему пользователя, который в приведенном выше примере имеет метод получения public boolean isAdmin().Если он возвращает true, то будет показана кнопка удаления в приведенном выше примере.Я не использую Struts2, но, насколько я вижу в его документации, есть тег <s:if>, который делает то же самое.

2 голосов
/ 18 ноября 2011

У вас есть много вариантов, которые вы можете выбрать. Один из них - то, что @Balus C упомянул в своем посте.

Кроме того, вы можете показать совершенно разные jsp для пользователя и администратора, что предотвратит много операторов if else вы можете настроить в файле struts.xml как

<action name="abcc" class="abc">
    <result name="admin_page">/templates/admin.jsp</result>
    <result name="user_page">/templates/user.jsp</result>
  </action>

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

...