2015-02-05 2 views
0

Я пытаюсь получить авторизацию для моего RestAPI, допустив перехватчик Spring (HandlerInterceptorAdapter). Метод PreHandle проверяет, требуется ли пользователю роль в требуемой роли, прежде чем область охватит запрошенное действие в контроллер. Однако для этого требуется, чтобы каждое действие (URL-путь) указывало идентификатор требуемой роли. Это моя текущая настройка:Добавление параметров в Spring MVC Interceptor

public class AuthorizationInterceptor extends HandlerInterceptorAdapter{ 

@Autowired 
IUserService us; 

    //before the actual handler will be executed 
    public boolean preHandle(HttpServletRequest request, 
      HttpServletResponse response, Object handler, Integer roleId) 
     throws Exception { 

     String userId = request.getHeader("UserId"); 

     if(!us.isUserInRole(Long.parseLong(userId), roleId)) 
      return false; 

     return true; 


    } 

} 

А (часть) сервлет-context.xml:

<interceptors> 
    <interceptor> 
     <mapping path="/" /> 
     <mapping path="https://stackoverflow.com/users/**" /> 
     <beans:bean class="com.lumi.api.interceptors.AuthorizationInterceptor"></beans:bean> 
    </interceptor> 
</interceptors> 

Мой вопрос, я могу кастрированный баран передать в параметре с Идентификатор роли bean в конфигурации servlet-context. Кажется, я ничего не могу найти в документах. Я думаю, что однажды увидел что-то вроде:

<mapping path="/" /> 
<parameter name="something" value="some value"> 

Но я не уверен.

ответ

1

Вы можете просто установить свойство используя стандартный пружинный синтаксис, пример

<beans:bean class="com.lumi.api.interceptors.AuthorizationInterceptor"> 
    <beans:property name="roleId" value="REGISTERED_USER"/> 
</beans:bean> 

вашего перехватчик, конечно, должен включать в себя свойство, так просто

public class AuthorizationInterceptor extends HandlerInterceptorAdapter{ 

    private String roleId; 

    public String getRoleId() { 
     return roleId; 
    } 

    public void setRoleId(String roleId) { 
     this.roleId = roleId; 
    } 

    // The rest of your code 
} 
+0

Совершенных. Это было именно то, что мне нужно. Спасибо! – MichaelCleverly

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