Проблема безопасности Grails и поисковая оптимизация - PullRequest
2 голосов
/ 18 мая 2009

Я пытаюсь создать логику управления, которая зависит от текущей страницы gsp для вызова действия, есть ли тег или метод сеанса, который я могу использовать для идентификации текущей страницы gsp

Я хочу ограничить доступ ко всем GSP, за исключением входа в систему и входа в систему, поэтому, если пользователь откроет любой другой gsp, он будет перенаправлен на страницу регистрации, и он также сможет перейти на страницу входа.

Логика, которую я пытаюсь реализовать, выглядит следующим образом, если current_Page - это login.gsp или singup.gsp, и больше ничего не делать, перенаправить на регистрацию //, где пользователь может без проблем перейти на страницу входа

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

Мне интересно, есть ли альтернативный способ сделать это, используя RequestmapController или UrlMappings?

Любой, кто имеет опыт работы с springMVC, сможет помочь, поскольку Grails построен на основе SpringMVC, который, в свою очередь, построен на основе стандартной платформы сервлета!

Примечание: я использую плагин Acegi

Примечание: Как приложение может быть оптимизировано для SEO (т. Е. Индексация Google) с помощью такого механизма безопасности?

Ответы [ 3 ]

3 голосов
/ 19 мая 2009

Вы должны прочитать это: текст ссылки

И учебник с использованием плагина ACEGI: текст ссылки

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

Чтобы установить плагин ACEGI Grails, выполните: grails install-plugin acegi

3 голосов
/ 19 мая 2009

Редактировать : Извините, я неправильно понял ваш вопрос. Я думал, что вы ищете альтернативу Requestmaps. Вот почему я изначально предложил защитить контроллеры аннотациями.

Если вы хотите использовать Requestmaps, вы можете сделать следующее:

  1. Создайте новую карту запросов, которая выглядит следующим образом:
    Шаблон URL = /login/**
    Роль = IS_AUTHENTICATED_ANONYMOUSLY

  2. Чтобы ограничить доступ к остальной части сайта, создайте еще одну запись карты запроса, которая соответствует всем URL:
    Шаблон URL = /*/**
    Роль = ROLE_USER (вы можете использовать любую другую роль, которая вам нравится)

IS_AUTHENTICATED_ANONYMOUSLY означает, что любой может получить доступ к соответствующим URL-адресам. Первое правило является более конкретным и поэтому должно перезаписывать второе и более общее правило.

Вы можете посмотреть AcegiSecurity Plugin - Защита URL для получения дополнительной информации.

Относительно SEO сайта. Поисковые системы AFAIK не могут получить доступ к сайтам, требующим аутентификации. Вот почему такие сайты, как Experts Exchange, используют хитрые уловки для индексации Google.

Вы можете предоставить анонимным пользователям доступ для чтения, в то время как для входа требуется логин (как это делает SO). Это позволило бы проиндексировать ваш сайт роботами поисковых систем.

Надеюсь, это поможет!

1 голос
/ 19 мая 2009

Вам нужен плагин безопасности Spring. Лучший способ сделать это - не использовать GSP, а использовать фильтр для всех веб-запросов. Это даст вам упомянутые карты запросов и UrlMappings GrailsNewbie.

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