我想用Spring Security 3.1.2配置一些自定义异常处理。我试着按照我发现的例子here和here,但都不起作用。我是Spring Security的新手,我想知道这是否与我使用预过滤器的事实有关。我从我的AuthenticationUserDetailsService实现的loadUserDetails()方法中抛出自定义异常。弹出安全性自定义异常处理程序preauth
public class AuthServiceImpl implements AuthenticationUserDetailsService<Authentication> {
@Autowired
private AuthDao authDao;
@Override
public UserDetails loadUserDetails(Authentication auth) throws UsernameNotFoundException {
Request req = (Request) auth.getPrincipal();
//get user details
User u = authDao.loadUser(req.getSessionId());
//check user rights for requested action
if(!u.getRights().contains(req.getAction()){
throw new CustomAuthException("User does not have permission to perform this action");
}
return u;
}
}
当引发异常时,我只是得到了正常的Tomcat 500页面的例外细节。无论出于何种原因,我的自定义例外都没有得到处理。我甚至在自定义处理程序中添加了一些println(),它甚至没有被调用。
我开始怀疑这个方法是否被排除在Spring的异常处理之外。如果需要,我可以提供更多的代码示例,但在这一点上,我不确定分享的相关内容。
你能说什么不准确吗? – TheZuck
@TheZuck我编辑了我的问题,以更具体地处理我的问题 – monitorjbl