当前位置: 首页 > 知识库问答 >
问题:

使用javaconfig拒绝访问spring安全性

田普松
2023-03-14

我希望你能帮我做以下几件事:

我正在使用spring安全和spring MVC建立一个web应用程序,我需要重定向的流到登录页面,一旦有一个尝试访问一个禁止的资源(403 HTTP状态代码)。

现在,spring安全已经完成了防止未经授权访问我在Restful API(@RESTController)中公开的每一个资源的工作,并使用适当的403默认页面进行响应。但由于我需要重定向到登录页面,我需要推动spring安全做一个重定向,而不是发送一个403。在这方面,我一直在努力做到以下几点,但我没能让它起作用:

>

  • 设置HttpSecurity bean以管理访问拒绝页面时的异常:

    @override protected void configure(HttpSecurity http)引发异常{http.csrf().disable().exceptionhandling().accessdeniedpage(“/security/403”);}

    现在,我将控制器设置为捕获/security/403 URL

    //对于403 access denied page@RequestMapping(值=“/Security/403”,方法=RequestMethod.Get)public void accesssDenied(){//在此执行操作,重定向或其他操作.}

    谢谢

  • 共有1个答案

    井镜
    2023-03-14

    创建一个充当拦截器的新类。

    该类将实现HandlerInterceptor接口并重写以下方法:

    从文档中可以看到:

    • prehandle(HttpServletRequest请求、HttpServletResponse响应、Object handler)-截取处理程序(就在控制器之前调用)的执行。
    • postHandle(HttpServletRequest请求、HttpServletResponse响应、对象处理程序、ModelAndView ModelAndView)-在控制器之后立即调用
    • 完成后(HttpServletRequest请求、HttpServletResponse响应、对象处理程序)-在将响应发送到视图之前调用

    在您的情况下,使用prehandle()方法检查客户端是否试图访问禁止的资源,如果是,则将客户端重定向到登录页面。事实上,这是使用拦截器处理执行流的最常见的范例之一。

     类似资料:
    • 我正在尝试使用Spring Boot RSocket与安全使用JWT令牌。它给我一个拒绝访问的错误,没有其他有用的信息来帮助调试? 拒绝访问 ApplicationErrorException(0x201):app//io.rsocket.exceptions.exceptions.from(exceptions.java:76)处的app//io-rsocket.core.RSocketRequ

    • 我已经创建了谷歌应用程序引擎项目,使用预测Api 1.5v。当我在本地均值localhost:8888使用谷歌o2Auth身份验证与客户端ID和客户端运行时,它对我来说工作正常secret.but当我实时运行它时,它会给出一个错误 Java语言安全AccessControlException:访问被拒绝(“java.io.FilePermission”“/base/data/home/apps/s

    • 我正在用Java RMI编写一个客户机-服务器程序,但遇到了一个错误: java.security.访问控制异常:拒绝访问(java.net.SocketPersion127.0.0.1:1099连接,解析) 我的代码如下: 怎么了?

    • 我已经将我的一个api配置为受保护,当我试图访问它时,它给我一个拒绝访问的错误消息,我不知道是什么原因。请注意,我正在传递有效的访问令牌。 我的场景:基本上我已经在授权服务器中创建了logout rest api,我希望允许带有有效令牌的请求访问这个api。 请求: 回应: 我发现下面的方法返回false,因此它引发了访问拒绝错误。 下面是我通过框架调试捕获的屏幕截图。还请检查评论中提到的图像。

    • 问题内容: 我得到以下IOException: 尝试运行以下代码时: 在我看来,由于某种原因,JVM无法创建新文件。如果文件已经存在,则代码可以很好地运行。是否存在某种访问文件来指示JVM是否可以创建新文件还是我只是在做错什么? 任何帮助深表感谢 :-) 我正在运行Java 1.4,并且已经在Windows XP中的JDeveloper中进行了测试。 问题答案: 问题在于这些调用彼此接替: 创建操

    • 我正在使用Spring Cloud oauth-2和Spring Cloud Security构建用户身份验证系统。我想有许多可以分配给用户组的权限。权限存储为枚举常量,如下所示: 我已经将身份验证服务器设置为向内存中的客户端发出JWT令牌。(我认为)一切都很好。 下面是我的用户详细信息实现 就像我说的,身份验证服务器正在颁发令牌。我面临的问题是授权。以下是我的资源服务器超文本传输协议配置: 成功