美文网首页Java学习之路
Springboot 与Spring Securty初步整合实验

Springboot 与Spring Securty初步整合实验

作者: 椰子奶糖 | 来源:发表于2019-07-18 14:54 被阅读47次

Spring boot与Spring Security

  • 应用程序的两个主要区域:认证、授权

认证(Authentication)

  • 建立一个他声明的主体的过程(一个主体,一般是指用户,设备,或一些可以在你的应用程序中执行动作的其它系统)。

授权(Authorization)

  • 指确定一个主体是否允许在你的应用程序中执行一个动作的过程,为了抵达需要授权的页面,主体的身份已经有认证过程建立。

Spring boot中使用Spring Security

  • 1、引入SpringSecurity;
    • 可以直接在快速建立工程中直接引入
    • 或者在pom文件中引入;
    <dependency>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-security</artifactId>
            </dependency>

  • 2.编写SpringSecurity的配置类;
    • 在类上加上注解;@EnableWebSecurity
    • 继承WebSecurityConfigurerAdapter

  • 3、控制请求的访问权限:
    • 重写configure(HttpSecurity http) 方法,利用HttpSecurity的authorizeRequests方法,设置各个访问路径的所需要的权限
@Override
        protected void configure(HttpSecurity http) throws Exception {
            //定制请求的授权规则
            http.authorizeRequests().antMatchers("/").permitAll()
                    .antMatchers("/level1/**").hasRole("VIP1")
                    .antMatchers("/level2/**").hasRole("VIP2")
                    .antMatchers("/level3/**").hasRole("VIP3");
        }

  • 4、定义认证规则

    • /重写configure(AuthenticationManagerBuilder auth)方法,利用AuthenticationManagerBuilder的inMemoryAuthentication方法指定对应用户的权限,这里可以对接到数据库上,这里为了测试方便,先直接写死
@Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            //为测试方便,直接写死,不放在数据库里面
            auth.inMemoryAuthentication().withUser("123456").password("123456").roles("VIP1","VIP2")
                    .and()
                    .withUser("username2").password("password").roles("VIP1","VIP2","VIP3")
                    .and()
                    .withUser("username3").password("password").roles("VIP1");
        }

  • 5、开启自动配置登录功能;
             //开启主动配置登录功能,效果:如果没有登录权限,就会来到登录页面
            http.formLogin().usernameParameter("user").passwordParameter("pwd")       
                    .loginPage("/userlogin");
            //1./login来到登录页面
            //2.重定向到/login?error表示登录失败
            //3.更多详细规定
            //4、默认post形式的 /login代表处理登陆
            //5、loginPage("/userlogin")是定制页面,而一但定制loginPage;那么 loginPage的post请求就是登陆

  • 6、注销:http.logout();同上
        //开启自动配置的注销功能。
        http.logout().logoutSuccessUrl("/");//注销成功以后来到首页
        //1、访问 /logout 表示用户注销,清空session
        //2、注销成功会返回 /login?logout 页面(假如只是http.logout()没有注销成功后跳转url的话默认返回登录界面);

  • 7、记住我:Remeberme();同上
    • 原理:
      • 第一次登录勾选了记住我选项,服务器就会给浏览器发送一个Cookies叫Remember-me,在这个Cookies过期之前,以后访问页面带上这个cookie,都能被Spring Securty找到账户信息并认证通过,这样达到记住密码的效果,不用再输入密码。
         //开启记住我功能
        http.rememberMe().rememberMeParameter("remeber");
        //点击注销会删除cookie,就是说点击注销,下次就不会自动登录了
        //rememberMeParameter("remeber");这里表示获取请求体中name属性是remember的信息内容,一般写在checkbox中

  • PS:567的方法是在configure(HttpSecurity http)中使用的

相关文章

网友评论

    本文标题:Springboot 与Spring Securty初步整合实验

    本文链接:https://www.haomeiwen.com/subject/ctsllctx.html