2017-10-18 136 views
1

用户登录到系统后,是否有更改网址的方法?例如,如果我的登录网址是demo.xxx.com/login,那么在用户通过身份验证后,我希望它更改为abc.xxx.com/dashboard。 abc是用户组,并且是在用户通过身份验证时确定的。我的应用程序基于spring引导,并使用spring安全性进行身份验证。根据动态字段更改网址

回答

1

最简单的方法是在弹簧安全性WebSecurityConfigurerAdapter bean中设置默认成功url。如果使用XML配置,我相信这也可以配置,虽然我不知道如何离手。

@Configuration 
@EnableWebSecurity 
public class AppSecurityConfiguration extends WebSecurityConfigurerAdapter { 
    protected void configure(HttpSecurity http) throws Exception { 
     http.formLogin() 
      .loginPage("/login") 
      .defaultSuccessUrl("/dashboard"); 
    } 
} 

如果需要甚至重定向的更精细的控制,可以实现自己的认证成功的处理程序,并提供自定义的重定向策略。

http.formLogin().successHandler(new SavedRequestAwareAuthenticationSuccessHandler() { 
    { 
     setRedirectStrategy(new RedirectStrategy() { 
      @Override 
      public void sendRedirect(HttpServletRequest request, HttpServletResponse response, String url) throws IOException { 
       // Put your logic here for sending redirects 
       response.sendRedirect("https://xyx.mydomain.com/dashboard"); 
      } 
     }); 
    } 
}); 
+0

我必须在用户通过身份验证并转到url仪表板后设置url。基于用户组,该网址应该被修改。在认证过程中,我没有这些信息来检查用户组。 @RequestMapping(值= “/门户/资产”) 公共字符串的仪表板(型号模型){ \t \t尝试{\t \t \t \t \t \t model.addAttribute( “1”, “1”); \t \t \t return“dashboard”; (例外e){ \t \t \t e.printStackTrace(); \t \t \t return“error”; \t \t \t \t} \t} – user3334226