2009-12-25 3 views
0

Как сделать ссылку видимой только в том случае, если у аутентифицированного пользователя есть соответствующие разрешения?Основы весенней безопасности

Я использую JSF, и, как я понимаю, я должен использовать атрибут rendered компонента, который должен вызывать логический метод bean.

Я даже нашел корреспондентский код некоторое время назад, но теперь я не могу найти его снова. Итак, может ли кто-нибудь дать мне пример такого логического метода, который работает с весной безопасности? (или, что еще лучше, ссылку на статью, в которой описывается эта проблема).

ответ

5

Мы используем SecurityContextHolder для доступа вошедшего в систему пользователя. Затем мы используем пользователей getAuthorities() метод, чтобы получить свои роли, в результате чего (примерно) следующее:

((UserDetails)SecurityContextHolder.getPrincipal()).getAuthorities(); 
+0

.. и решить конкретную проблему, обернуть ее в getter и использовать ее в логическом выражении. – BalusC

4

Атрибут rendereddisabled и readonly) не обязательно ожидать метод получения, который возвращает boolean как это:

public boolean getBooleanValue() { 
    return this.booleanValue; 
} 

Эти атрибуты просто ожидать, логическое выражение, который может быть любым из следующих примеры:

<h:someComponent rendered="#{myBean.booleanValue}" /> 
<h:someComponent rendered="#{myBean.intValue > 10}" /> 
<h:someComponent rendered="#{myBean.objectValue == null}" /> 
<h:someComponent rendered="#{myBean.stringValue != 'someValue'}" /> 
<h:someComponent rendered="#{!empty myBean.collectionValue}" /> 
<h:someComponent rendered="#{!myBean.booleanValue && myBean.intValue != 0}" /> 
<h:someComponent rendered="#{myBean.stringValue == 'oneValue' || myBean.stringValue == 'anotherValue'}" /> 

приставка is, кстати, также позволило boolean добытчиками:

public boolean isBooleanValue() { 
    return this.booleanValue; 
} 

Вы можете обернуть любой API Весна безопасности используется в поглотителе и использовать его в булево выражение EL в одном из указанных выше способов.

0

можно использовать Acegi-JSF компоненты: http://cagataycivici.wordpress.com/2006/01/19/acegi%5Fjsf%5Fcomponents%5Fhit%5Fthe/

в основном вы должны получить доступ к основным проверить свои полномочия ...

+0

Эта статья более 3 лет, а тем временем Acegi был передан весной под именем .. да, Весенняя безопасность. – BalusC

Смежные вопросы