spring-Security一:springboot集成spring-Security

第一步:添加@EnableWebSecurity注解

          一般来说我们都会利用@EnableWebSecurity注解继承 WebSecurityConfigurerAdapter的类,这样就构成了spring-Security的配置,我们还可以用@EnableWebSecurity注解和 @Configuration 注解一起注解 WebSecurityConfigurer 类型的类来构成配置

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
}

第二步:我们有了注解,就差第一步说的 WebSecurityConfigurer 类型的类了,一般情况,会选择继                         承 WebSecurityConfigurerAdapter 类,然后重写它的两个方法即可

@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    /**
     * 匹配 "/" 路径,不需要权限即可访问
     * 匹配 "/user" 及其以下所有路径,都需要 "USER" 权限
     * 登录地址为 "/login",登录成功默认跳转到页面 "/user"
     * 退出登录的地址为 "/logout",退出成功后跳转到页面 "/login"
     * 默认启用 CSRF
     */
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()//允许基于使用HttpServletRequest限制访问
                .antMatchers("/").permitAll()
                .antMatchers("/user/**").hasRole("USER")
                .and()
                //指定支持基于表单的身份验证。如果未指定FormLoginConfigurer#loginPage(String),则将生成默认登录页面
                .formLogin().loginPage("/login").defaultSuccessUrl("/user")
                .and()
                //添加退出登录支持。当使用WebSecurityConfigurerAdapter时,这将自动应用。默认情况是,访问URL"/ logout",
                // 使HTTP Session无效来清除用户,清除已配置的任何#rememberMe()身份验证,清除SecurityContextHolder,
                // 然后重定向到"/login?success"
                .logout().logoutUrl("/logout").logoutSuccessUrl("/login");
    }

    /**
     * 在内存中创建一个名为 "anoy" 的用户,密码为 "pwd",拥有 "USER" 权限
     */
    @Override
    protected void configure(AuthenticationManagerBuilder builder) throws Exception{
        builder
                .inMemoryAuthentication()
                .withUser("anoy").password("pwd").roles("USER");
    }

}

接下来主要介绍一下我们重写的两个方法的作用

(1):configure(HttpSecurity hhtp)

HttpSecurity作用:配置拦截什么URL、设置什么权限等安全控制



(2):configure(AuthenticationManagerBuilder builder)

AuthenticationManagerBuilder 用于创建一个 AuthenticationManager,让我能够轻松的实现内存验证、LADP验证、基于JDBC的验证、添加UserDetailsService、添加AuthenticationProvider


 
 



猜你喜欢

转载自blog.csdn.net/liyu121/article/details/80267406