0
我有一个REST Webservice的spring引导应用程序。Spring引导拦截器返回JSON
我想添加一个拦截器,以便每个没有特定操作权限的角色返回401错误代码。
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
logger.info("Request URL::" + httpServletRequest.getRequestURL().toString()
+ ":: Start Time=" + System.currentTimeMillis());
UsernamePasswordAuthenticationToken token = (UsernamePasswordAuthenticationToken) httpServletRequest.getUserPrincipal();
String roleStr = token.getAuthorities().iterator().next().getAuthority();
String action = httpServletRequest.getServletPath();
Role role = roleRepository.findOne(Long.parseLong(roleStr));
if (role.getActions().contains(action)) {
return true;
}
httpServletResponse.sendError(HttpServletResponse.SC_UNAUTHORIZED);
return false;
}
的问题是,响应总是返回HTML,如何做出反应回报JSON像@RestController注释的控制器?
感谢
您正在使用Spring Security的,那么为什么在地球上玉需要这个? Spring Security已经为你做了这个... –
我想动态地修改动作,并且这些动作可能不仅与他们可以在函数内部调节的url有关,这是否可以在spring security中执行? –
您是否阅读过文档?您可以使用基于URL和/或方法的安全性,它们对于表达式和全部也可能非常复杂。 –