然而,系统的规模越来越大,可能会出现一个错误,即未经授权的用户会通过控制器层,试图通过自定义授权服务访问受保护的数据。
一方面,最适合的异常似乎是accessdeniedexception
(Http 403),但另一方面,抛出500或404以“隐藏”所请求资源的存在可能是更安全的方法。
我考虑了以下例外情况:
如果您正在使用Spring Security和一个自定义授权服务,那么您可能会有如下内容:
@Component
public class CustomAccessDeniedHandler extends AccessDeniedHandlerImpl {
private final String HOME_PAGE = "/index.html";
@Override
public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException e) throws IOException, ServletException {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (auth != null) {
if (auth instanceof AnonymousAuthenticationToken) {
response.sendRedirect("/#/login");
super.handle(request, response, e);
return;
}
if (auth.getAuthorities().iterator().next().getAuthority().equals("ROLE_EMPLOYEE") || auth.getAuthorities().iterator().next().getAuthority().equals("ROLE_ADMIN") ) {
response.sendRedirect("/dashboard/Dashboard.xhtml");
super.handle(request, response, e);
return;
}
response.sendRedirect("/#/dashboard/user");
}
super.handle(request, response, e);
}
}
在您的情况下,在应用程序中,我宁愿建议重定向到登录屏幕--如上图所示--带有类似请登录
的消息。
在API中,我将返回404-Resource not found
响应。
我希望在数据库中找不到该项时出现异常
我正在用Python编写一个简单的API客户端,我想知道如果远程服务器不满意,我应该引发什么异常。 API本身的文档记录非常糟糕(我不知道所有可能的错误消息,所以我不能为所有这些消息定义自定义类),我让请求处理HTTP级别的错误,在这些情况下会引发,但是如果服务器在JSON响应中只提供键,我应该引发什么呢? 我目前使用的是,但感觉非常广泛,我想知道是否有更好的替代方案。 问候。
我目前正在一个后端有Spring,前端有Angularjs的网站上工作,我们已经讨论了后端响应以处理前端的消息对话框,我有一个问题要问: 假设我有一个API: 若客户机发出一个带有无效参数(如字符串)的请求,那个么应该从服务器返回哪个响应代码?HTTP 400错误的请求和响应正文包含消息“fromTime和toTime应采用时间戳格式”,还是HTTP 200包含相同的消息? 我看到了一些Googl
你好,我有一个问题与elasticsearch php api,Elastica。 如果我运行这个: 我得到0个结果
我在做一个基于线性探测的自定义哈希表,在C 11中,我在其中做了一个函数,函数应该返回哈希表中对应键的值,这是我的代码: 问题是,传递的每个键在哈希表中可能没有对应的值。在这个函数中,我无法获得如何处理这个异常。处理这个异常的可能方法是什么?C STL
问题内容: 我的一个朋友以这种奇怪的行为来到我这里,我无法解释,任何见解的观点都将不胜感激。 我正在运行VS 2005(C#2.0),以下代码显示了该行为 上面的代码,打印“ 0”,清楚地表明它应该有返回-1 这在Java中也会发生,其中以下类显示了该行为: 我正在运行Java 1.6.0_17 问题答案: 这不是规则的例外,而是方法和定义的自然结果。 您声称应该返回。这基本上等于应返回的索赔。为