zoukankan      html  css  js  c++  java
  • Spring Security(一)

    即使没有任何网站登录验证功能编码基础的人,也能想出下面的这个功能需求:

    1. 网站分为首页、登录页、用户页面、管理员页面和报错页面;
    2. 使用用户名加密码登录,登录错误要报错;
    3. 不同的用户拥有不同的权限,不同的权限可以访问不同的网页;
    4. 首页和登录页不需要任何权限;
    5. 用户页面需要USER权限;
    6. 管理员页面需要ADMIN权限;
    7. 如果用户没有登录,则访问需要权限的页面时自动跳转登录页面。


    1. AuthenticationManagerBuilder 身份验证管理器生成器(那意思就是:生成一个身份验证管理器)

    2. BCryptPasswordEncoder 密码编码器(BCrypt跨平台文件加密工具,BCryptPasswordEncoder就是一种加密手法)

    3.inMemory在内存中

    @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            /**
             * 在内存中创建一个名为 "user" 的用户,密码为 "pwd",拥有 "USER" 权限,密码使用BCryptPasswordEncoder加密
             */
            auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
                    .withUser("user").password(new BCryptPasswordEncoder().encode("pwd")).roles("USER");
            /**
             * 在内存中创建一个名为 "admin" 的用户,密码为 "pwd",拥有 "USER" 和"ADMIN"权限
             */
            auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
                    .withUser("admin").password(new BCryptPasswordEncoder().encode("pwd")).roles("USER","ADMIN");
        }

    4.permitAll():允许所有用户访问,不需要任何权限

    authorize:授权;批准  authorizeRequests()授权请求

    /**
         * 匹配 "/","/index" 路径,不需要权限即可访问
         * 匹配 "/user" 及其以下所有路径,都需要 "USER" 权限
         * 匹配 "/admin" 及其以下所有路径,都需要 "ADMIN" 权限
         * 登录地址为 "/login",登录成功默认跳转到页面 "/user"
         * 退出登录的地址为 "/logout",退出成功后跳转到页面 "/login"
         */
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .authorizeRequests()
                    .antMatchers("/","/index","/error").permitAll()
                    .antMatchers("/user/**").hasRole("USER")
                    .antMatchers("/admin/**").hasRole("ADMIN")
                    .and()
                    .formLogin().loginPage("/login").defaultSuccessUrl("/user")
                    .and()
                    .logout().logoutUrl("/logout").logoutSuccessUrl("/login");
        }

    5.

    完整代码:

    /**
     * Author:      wxb
     * Project:     spring_security_example
     * Create Date: 2018/10/18
     * Create Time: 17:36
     * Description: Security 配置类
     */
    @EnableWebSecurity
    public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(AuthenticationManagerBuilder auth) throws Exception {
            /**
             * 在内存中创建一个名为 "user" 的用户,密码为 "pwd",拥有 "USER" 权限,密码使用BCryptPasswordEncoder加密
             */
            auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
                    .withUser("user").password(new BCryptPasswordEncoder().encode("pwd")).roles("USER");
            /**
             * 在内存中创建一个名为 "admin" 的用户,密码为 "pwd",拥有 "USER" 和"ADMIN"权限
             */
            auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
                    .withUser("admin").password(new BCryptPasswordEncoder().encode("pwd")).roles("USER","ADMIN");
        }
    
        /**
         * 匹配 "/","/index" 路径,不需要权限即可访问
         * 匹配 "/user" 及其以下所有路径,都需要 "USER" 权限
         * 匹配 "/admin" 及其以下所有路径,都需要 "ADMIN" 权限
         * 登录地址为 "/login",登录成功默认跳转到页面 "/user"
         * 退出登录的地址为 "/logout",退出成功后跳转到页面 "/login"
         */
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http
                    .authorizeRequests()
                    .antMatchers("/","/index","/error").permitAll()
                    .antMatchers("/user/**").hasRole("USER")
                    .antMatchers("/admin/**").hasRole("ADMIN")
                    .and()
                    .formLogin().loginPage("/login").defaultSuccessUrl("/user")
                    .and()
                    .logout().logoutUrl("/logout").logoutSuccessUrl("/login");
        }
    }









    1

  • 相关阅读:
    懒懒的~~
    BigDecimal,注解
    遇到的一点问题些
    npm一点点
    TortoiseSvn问题研究(一)
    关于maven-基本
    HttpServletRequest二三事
    学习迭代1需求分析
    FMDB简单使用
    计算机中的事务、回滚
  • 原文地址:https://www.cnblogs.com/xc-xinxue/p/12500211.html
Copyright © 2011-2022 走看看