如何使弹簧安全重定向

Posted

技术标签:

【中文标题】如何使弹簧安全重定向【英文标题】:How to make spring security redirect 【发布时间】:2016-09-29 09:22:04 【问题描述】:

我有两个jsp页面:第1页和第2页。默认打开第1页,但要打开它,用户需要有正确的角色。当用户没有正确的角色访问某些页面时,我还有一个拒绝访问的页面。我想要做的是,当没有正确角色的用户尝试打开默认页面(Page1)时,不会重定向到拒绝访问页面,而是重定向到 Page2。

【问题讨论】:

【参考方案1】:

您可以像这样自定义您的accessDeniedPage

http.authorizeRequests()
        // your config here ...
        .and()
        .exceptionHandling().accessDeniedPage("/Page2")
    

更新

@RequestMapping(..)
public String method(Authentication auth) 
  if (containsRole(auth.getAuthority(), "ROLE_ADMIN")) 
    return "/PAGE1";
   else 
    return "redirect:/PAGE2";
  

【讨论】:

我希望两个页面都存在,在某些情况下我需要此访问被拒绝页面 @user5783530 你的意思是你不期待全局行为,但只针对这种情况?然后从控制器控制它会是更好的方法 是的,仅适用于这种情况,我怎样才能从控制器中做到这一点 @user5783530 您可以在控制器方法中自动连接org.springframework.security.core.Authentication,然后与getAuthorities()进行比较

以上是关于如何使弹簧安全重定向的主要内容,如果未能解决你的问题,请参考以下文章

CAS服务器认证成功后,如何使Spring安全将用户重定向到原始请求的页面

如何使授权属性返回自定义 403 错误页面而不是重定向到登录页面

Spring MVC 中的 HTTP 303 重定向 * 不附加 JSESSIONID * 并且不触及任何弹簧配置 [重复]

如何重定向以“.jsp”结尾的网址

如何使Javascript文件301重定向?

如何使 Google 地图标记重定向到 URL?