美文网首页后端开发
16.springboot: 整合Spring Security

16.springboot: 整合Spring Security

作者: AiPuff | 来源:发表于2017-02-14 08:45 被阅读1097次

    1、在pom.xml中添加如下配置,引入对Spring Security的依赖。

    <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-security</artifactId>
            </dependency>
    

    2、创建Spring Security的配置类 WebSecurityConfig ,具体如下:

    package www.jiutouxiang.config;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
    import org.springframework.security.config.annotation.web.builders.HttpSecurity;
    import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
    import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
    
    /**
     * Spring Security的配置类 WebSecurityConfig 
     * 通过 @EnableWebMvcSecurity 注解开启Spring Security的功能
     * 继承 WebSecurityConfigurerAdapter ,并重写它的方法来设置一些web安全的细节
     * configure(HttpSecurity http) 方法
     * 通过 authorizeRequests() 定义哪些URL需要被保护、哪些不需要被保护。
     * 例如以上代码指定了 / 和 /home 不需要任何认证就可以访问,其他的路径都必须通过身份验证。
     * 通过 formLogin() 定义当需要用户登录时候,转到的登录页面。
     * configureGlobal(AuthenticationManagerBuilder auth) 方法,
     * 在内存中创建了一个用户,该用户的名称为user,密码为password,用户角色为USER。新增登录请求与页面
     * @author hasee
     *
     */
    @Configuration
    @EnableWebSecurity
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
    
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                .authorizeRequests()
                    .antMatchers("/", "/home").permitAll()
                    .anyRequest().authenticated()
                    .and()
                .formLogin()
                    .loginPage("/login")
                    .permitAll()
                    .and()
                .logout()
                    .permitAll();
        }
    
        @Autowired
        public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
            auth
                .inMemoryAuthentication()
                    .withUser("user").password("password").roles("USER");
        }
    
    }
    

    3、增加login映射

    @Controller
    public class HelloController {
    
        // 省略之前的内容...
    
        @RequestMapping("/login")
        public String login() {
            return "login";
        }
    
    }
    

    4、创建登录界面

    <!DOCTYPE html>  
    <html xmlns="http://www.w3.org/1999/xhtml"  
          xmlns:th="http://www.thymeleaf.org"
          xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
        <head>
            <title>Spring Security Example </title>
        </head>
        <body>
            <div th:if="${param.error}">
                用户名或密码错
            </div>
            <div th:if="${param.logout}">
                您已注销成功
            </div>
            <form th:action="@{/login}" method="post">
                <div><label> 用户名 : <input type="text" name="username"/> </label></div>
                <div><label> 密  码 : <input type="password" name="password"/> </label></div>
                <div><input type="submit" value="登录"/></div>
            </form>
        </body>
    </html>  
    

    5、退出

    <!DOCTYPE html>  
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"  
          xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity3">
        <head>
            <title>Hello World!</title>
        </head>
        <body>
            <h1 th:inline="text">Hello [[${#httpServletRequest.remoteUser}]]!</h1>
            <form th:action="@{/logout}" method="post">
                <input type="submit" value="注销"/>
            </form>
        </body>
    </html>

    相关文章

      网友评论

      • Pencilso:而且还是抄别人的,而且还没注释来源
      • 4c48d1541a02:这篇文章我觉得一点用都没有,无非是一些最简单的说明,spring-security的精髓根本体验不到。

      本文标题:16.springboot: 整合Spring Security

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