Скрытие тегов привязки перед загрузкой страницы - PullRequest
0 голосов
/ 22 сентября 2011

У меня есть список URL-адресов разрешений, которые являются ссылками на определенные страницы, и этот список происходит из базы данных.Теперь в приложении есть страницы jsp, и у них есть определенные ссылки, которые отображаются.Эти jsps - более старые jsps, и весь код здесь.Прямо сейчас, основываясь на списке разрешений, которые я получаю из базы данных, я бы хотел показать или скрыть эти ссылки.

Есть ли какой-либо централизованный способ сделать это, используя фрагмент кода javascript, jsp или их комбинацию, которая можетбыть помещенным во все jsps?

Часть авторизации для этих URL-адресов уже позаботилась, следует позаботиться об отображении URL-адресов, которые обычно являются якорными тегами, за исключением способа фактического входа в каждый jsp и проверки в сеансе.

Ответы [ 5 ]

0 голосов
/ 22 сентября 2011

Не просматривая каждую страницу, вы, вероятно, могли бы настроить комбинацию Java и JavaScript для выполнения этой задачи.

Я бы лично использовал jQuery. Установите переменную JavaScript на основе уровня разрешений, затем используйте jQuery для циклического прохождения всех ваших якорей / ссылок для анализа имени ссылки или общего атрибута, чтобы удалить или скрыть их.

var permissionLevel = <%=bean.getPermissionLevel()%>

switch(permissionLevel ){     
    case 0:
        $("a").each(function(){
            var link = $(this).attr("href");
            if(link == 'myLinkName'){
                $(this).remove();
            }
        })
}

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

0 голосов
/ 22 сентября 2011

Если вы отправите в браузер массив разрешенных страниц javascript, вы можете затем просмотреть все ссылки, чтобы проверить, есть ли они в списке. Возможно, у вас есть некоторые ссылки, которые не защищены, поэтому вам придется как-то обрабатывать их.

0 голосов
/ 22 сентября 2011

Вы можете сделать все теги привязки без скрытого по умолчанию класса «show», используя одно выражение CSS:

a:not(.show) {
    display: none;
}

, а затем в том месте, где вы хотите их показать (я бы сказал в вашемна случай, если это будет функция готовности документа), просто добавьте CSS-класс «show», который сделает недействительным указанное выше правило.

JavaScript:

var anchors = document.getElementsByTagName("a");
for (var i = 0; i < anchors.length; i++) {
    anchors[i].className = "show";
}
0 голосов
/ 22 сентября 2011

Используйте теги JSP libs.Оберните ссылку URL в taglib.Например, у Spring Security есть что-то вроде

<security:authorize access="hasRole('ROLE_ADMIN')">
   // display something
</security:authorize>

в taglib, вы проверите, вошел ли пользователь в систему, имеет ли он определенные разрешения или роли, и если он у вас есть, вы либо напишите, либо пропустите это...

0 голосов
/ 22 сентября 2011

Я создал собственное определение тега, которое принимает роли безопасности и включает или исключает ссылки на странице, если проверка роли прошла успешно.Если вы делаете это в javascript и скрываете только ссылки, вы все равно можете просмотреть страницу и получить доступ к URL-адресам. Надеюсь, это поможет

...