使用弹簧webmvc和3.2版弹簧安全的web视图筑底,我想返回根据用户角色的不同观点(或者是否用户进行身份验证或没有),所以,对于"/"
请求角色匿名(或不经过身份验证的用户的用户)获取欢迎页和作用用户的用户得到家页。春季3.2:选择用户角色
我目前的做法与常规控制器这样做:
@Controller
public class WelcomeCtrl {
@RequestMapping("/")
public String welcome(Principal principal) {
if (userAuthenticated(principal)) {
return "redirect:home";
}
return "welcome";
}
private boolean userAuthenticated(Principal principal) {
return principal != null && principal instanceof Authentication
&& hasUserRole((Authentication) principal);
}
private boolean hasUserRole(Authentication principal) {
Collection<? extends GrantedAuthority> authorities = (principal)
.getAuthorities();
return Iterables.contains(Collections2.transform(authorities,
new Function<GrantedAuthority, String>() {
@Override
public String apply(GrantedAuthority authority) {
return authority.getAuthority();
}
}), "ROLE_USER");
}
}
不过,我真的不喜欢它,因为我觉得这应该重定向使用Spring Security来完成(我错了?)。你知道使用Spring Security配置的方法吗?我目前的配置如下:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/welcome").permitAll()
.anyRequest().authenticated()
.and().formLogin()
.defaultSuccessUrl("/home").permitAll()
.and().logout().permitAll();
}
@Override
protected void configure(AuthenticationManagerBuilder authManagerBuilder)
throws Exception {
authManagerBuilder.inMemoryAuthentication().withUser("user")
.password("password").roles("USER");
}
}
@Macias你对我的答案满意吗,对你来说看起来不错,我的朋友 – Tenacious
@Macias如果它看起来不错,请注意它,所以它会对其他人有所帮助我的朋友 – Tenacious
那么,从春季文档复制粘贴的确切位置是我的问题的答案? -1为我的朋友 – macias