Spring Security(Java Config)登录 - 根据用户角色返回不同的 URL
Posted
技术标签:
【中文标题】Spring Security(Java Config)登录 - 根据用户角色返回不同的 URL【英文标题】:Spring Security (Java Config) Login - Return Different URL Based on User Role 【发布时间】:2015-07-04 00:44:45 【问题描述】:我想根据用户的角色在用户登录系统时返回不同的页面。
我有这个方法可以登录,但是不知道怎么返回不同的网址。
@Override
protected void configure(HttpSecurity http) throws Exception
http
.authorizeRequests()
.antMatchers("/css/**", "/js/**", "/images/**", "/data/**", "/", "/home").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
我该怎么做?如果您不添加一个新的控制器,在登录后重定向并且此重定向到他的基本角色中的不同 url,有可能吗?
非常感谢!
【问题讨论】:
我不明白你的意思是什么:“......由他的角色” - 但也许这会有所帮助。 ***.com/a/14577220/280244 @Ralph 是具有角色用户的登录用户,如果使用角色管理员登录管理员,则具有不同的页面。当用户登录重定向页面或其他时,我需要提供不同的 url 【参考方案1】:您可以在.formLogin()
和.logout
函数上使用defaultSuccessUrl 和failureUrl。这是一个例子:
.formLogin()
.loginPage("/login").loginProcessingUrl("/login/validate")
.defaultSuccessUrl("/").failureUrl("/login?error=true")
.usernameParameter("username").passwordParameter("password")
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessUrl("/login?logout=true")
至于每个用户角色的重定向,我建议defaultSuccessUrl
页面根据用户角色进行重定向:
<sec:authorize access="hasRole('ROLE_ADMIN')">"
<c:redirect url="/admin.html"/>
</sec:authorize>
<sec:authorize access="hasRole('ROLE_USER')">"
<c:redirect url="/user.html"/>
</sec:authorize>
【讨论】:
这正是我需要的,太好了。但是有一个问题,我用java中的所有东西和注解,能不能把url的一部分变成一个函数的作用?我重写方法?我“复制”了这个***.com/questions/7470405/…;但是我没有xml,如何在java注释中制作?以上是关于Spring Security(Java Config)登录 - 根据用户角色返回不同的 URL的主要内容,如果未能解决你的问题,请参考以下文章
Spring Security Java Config Preview--官方
如何在 Spring Boot 中使用 Spring Security 配置 CORS? [复制]
java.security.Principal - 在 HttpServletRequest 和 Spring Security 中创建
Spring- Security :java.lang.NoClassDefFoundError: org/springframework/security/context/DelegatingApp