我正在使用 Spring 3.2.3 和 Shiro 1.2.0 来保护对服务的访问。这可行,但会导致引发特定于 Shiro 的异常。我想抛出一个特定于应用程序的异常。这是否可能,无论是使用 Shiro 还是 Spring 级别的映射?我知道我可以使用 Spring 将控制器异常映射到视图,但我不确定如何在服务层处理它。我的设置:
服务接口:
public interface CaseService {
Case getCase(Integer id);
}
服务实现:
@Service
public class CaseServiceImpl implements CaseService {
@RequiresAuthentication
public Case getCase(Integer id) {
// ...
}
}
在没有经过身份验证的主题的情况下测试上述内容时,我确实收到了预期的异常,但它是 org.apache.shiro.* 异常。我尝试使用 Spring 的 @ExceptionHandler 来处理 Shiro 异常。它没有效果,但我认为它需要在控制器层工作。