2014-11-17 3 views
0

Я пытаюсь реализовать собственный метод путем расширения WebSecurityExpressionRoot для использования в секунду: autorize taglig следующим образом:Задание более одного параметра метода в сек: санкционировать осуществление доступа

<sec:authorize access="uiAuthz('allevents', 'myVal')"> 
... 
</sec:authorize> 

Реализация как:

public class CustomWebSecurityExpressionRoot extends WebSecurityExpressionRoot { 
    public boolean uiAuthz(String uiElement, String val) { 
    ... 
    } 
    ... 
} 

Однако, независимо от того, что я пытаюсь, аргументы метода uiAuthZ всегда рассматриваются как один аргумент String, «allevents, myVal».

Есть ли какой-либо способ, которым я могу получить Spring Framework для анализа их как нескольких аргументов?

Может показаться, что я могу использовать StringTokenizer и т. Д. Для простого случая, как в приведенном выше примере, но о том, когда мне нужно передать ArrayList строк.

+0

Это кажется ошибка пользователя, но Я собираюсь принять ответ, данный @ rob-winch, поскольку это действительно способ сделать это c orrectly. –

ответ

1

Как вы интегрируете свой CustomWebExpressionRoot с приложением? Для этого вам необходимо обеспечить создание пользовательского WebExpressionHandler, который регистрирует пользовательский root. Например:

CustomExpressionHandler.java

public class CustomExpressionHandler extends DefaultWebSecurityExpressionHandler { 
    @Override 
    protected SecurityExpressionOperations createSecurityExpressionRoot(Authentication authentication, FilterInvocation fi) { 
     WebSecurityExpressionRoot root = new CustomWebSecurityExpresssionRoot(authentication, fi); 
     root.setPermissionEvaluator(this.getPermissionEvaluator()); 
     root.setTrustResolver(new AuthenticationTrustResolverImpl()); 
     root.setRoleHierarchy(this.getRoleHierarchy()); 
     return root; 
    } 
} 

security.xml

<http ...> 
    <expression-handler ref="webExpressionHandler"/> 
</http> 

<b:bean id="webExpressionHandler" 
    class="sample.CustomExpressionHandler"/> 

Вы можете найти полный пример на https://github.com/rwinch/spring-security-sample/tree/custom-webexpressionroot

+0

Это странно. Клянусь, что в последний раз это не сработало. Я был и до сих пор использую пользовательский веб-эксплорерщик, как вы предложили. На этот раз я очистил проект, и он начал работать! –

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

  • Нет связанных вопросов^_^