Spring Security Oauth2.0认证授权个人学习开源框架-SpringSecurity系列

10.Spring Security快速上手-认证功能

2020-03-19  本文已影响0人  LANSHENGYANG

认证

认证页面

完全配置

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    //定义用户信息服务(查询用户信息)
    @Bean
    public UserDetailsService userDetailsService(){
        InMemoryUserDetailsManager manager=new InMemoryUserDetailsManager();
        manager.createUser(User.withUsername("zs").password("123").authorities("p1").build());
        manager.createUser(User.withUsername("ls").password("123").authorities("p2").build());
        return manager;
    }

    //密码编码器
    @Bean
    public PasswordEncoder passwordEncoder(){
        return NoOpPasswordEncoder.getInstance();
    }

    //安全拦截机制(最重要)
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .antMatchers("/r/**").authenticated()//所有/r/**的请求必须认证通过
                .anyRequest().permitAll()//除了/r/**,其他的请求可以访问
                .and()
                .formLogin()//允许表单登录
                .successForwardUrl("/login-success");//自定义登录成功的页面地址
    }
}
/**
 * spring容器,相等于加载了applicationContext.xml
 * @return
 */
@Override
protected Class<?>[] getRootConfigClasses() {
    return new Class[]{ApplicationConfig.class, WebSecurityConfig.class};
}

SpringSecurity初始化

public class SpringSecurityApplicationInitializer
        extends AbstractSecurityWebApplicationInitializer {
    public SpringSecurityApplicationInitializer(){
        //super(WebSecurityConfig.class);
    }
}

默认根路径请求

/**
 * 默认Url根路径跳转到/login,此url为spring security提供
 * @param registry
 */
@Override
public void addViewControllers(ViewControllerRegistry registry){
    registry.addViewController("/").setViewName("redirect:login");
}

认证成功页面

//安全拦截机制(最重要)
@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests()
            .antMatchers("/r/**").authenticated()//所有/r/**的请求必须认证通过
            .anyRequest().permitAll()//除了/r/**,其他的请求可以访问
            .and()
            .formLogin()//允许表单登录
            .successForwardUrl("/login-success");//自定义登录成功的页面地址
}
@RestController
public class LoginController {
    @RequestMapping(value = "/login-success",produces = {"text/plain;charset=utf-8"})
    public String loginSuccess(){
        return "登录成功";
    }
}
上一篇 下一篇

猜你喜欢

热点阅读