gpt4 book ai didi

java - 如果用户没有正确的角色,如何重定向? Spring 安全

转载 作者:行者123 更新时间:2023-12-01 19:59:55 25 4
gpt4 key购买 nike

我有一个 SpringBoot Controller ,该 Controller 返回一些 secret 信息,并且该信息只能由具有特殊角色的人员访问,对于我想重定向到其他 Controller 的其他角色。我使用 @preAuutorize('hasRole()') 来检查用户角色。请参阅示例

@PreAuthorize("hasRole('COLOMBIAN_PRESIDENT')")
@GetMapping("/colombia/status")
public ModelAndView showColombiaStatus(){
//This controller can be accessed by colombian president
//for other people, to redirect to showPublicInformation.
}

@GetMapping(value = {"/colombia/public-information"})
public ModelAndView showPublicInformation(){
//for any people
}

如果任何用户没有角色 COLOMBIAN_PRESIDENT,我想重定向到 showPublicInformatio()

如果用户没有名为 COLOMBIAN_PRESIDENT 的角色,如何从 showColombiaStatus 重定向到 showPublicInformation

谢谢

最佳答案

我不会采用 @ExceptionHandler 方法,而是采用 org.springframework.security.web.access.AccessDeniedHandler ,即避免将通用异常处理与安全异常混合在一起。

您需要在实现接口(interface)AccessDeniedHandler的类中的handle方法中编写重定向。通过这种方法,您还可以跟踪所有用户尝试登录系统的内容以及哪些用户被拒绝访问。

您可以检查下面的auth对象是否为空,以了解访问是否被拒绝。

身份验证auth
= SecurityContextHolder.getContext().getAuthentication();

您可以创建此处理程序的 bean 并在安全配置中进行设置,如下所示 - .exceptionHandling().accessDeniedHandler(accessDeniedHandler());

关于java - 如果用户没有正确的角色,如何重定向? Spring 安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48372583/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com