• spring security与springboot结合得体验


        之前有过使用spring security得经历,那是在一年前了,在一家公司他们已经封装好了接口和配置,当时会拿来使用。顺之就给自己得毕业设计也搞了spring security,但是遇到很多问题,因为它被经过修改,已经跟官网上得不一样了,或者说,他已经变成了一个变态(多态)。好了,话不多说,这次呢 ,我开发使用得是springboot框架,大家也知道,少了很多配置,所以也就没有了跟web开发得时候一样得步骤了。经过二天得攻坚,我总算实现了权限控制。

    1.首先:需要在pom文件里引入spring security相关jar;

    2.配置一个spring security得配置文件,但是文件已经变成了java后缀(当然此处我百度理解过来都是如此),代码如下:


    @Configuration
    @EnableWebSecurity
    public class SecurityConfig{

    @Configuration
    public static class WebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter{

    @Autowired
    CustomUserService customUserService;

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.userDetailsService(customUserService); //配置自定义userDetailService
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception{
    http.csrf().disable();
    http.authorizeRequests().antMatchers("/").permitAll(); //允许访问首页
    http.formLogin().loginPage("/login")
    //设置默认登录成功跳转页面
    .loginProcessingUrl("/getLogin")
    .defaultSuccessUrl("/crud").failureUrl("/loginError").permitAll()
    ;
    }
    }
    }




    3.一个自定义,用来判断是否用户存在于数据库,如果存在,还获取对应得权限:
    @Service
    public class CustomUserService implements UserDetailsService {

    @Autowired
    UserMapper userMapper;


    List<Map<String,Object>> list = new ArrayList<>();


    @Override
    public UserDetails loadUserByUsername(String username){
    Map<String,Object> map = new HashMap<>();
    map.put("username",username);
    list = userMapper.findUserName(map);
    if(list.size()==0){
    return null;
    }else{
    //用于添加用户权限
    String role = list.get(0).get("name").toString();
    String password = list.get(0).get("user_password").toString();
    Collection<? extends GrantedAuthority> authorities = AuthorityUtils.commaSeparatedStringToAuthorityList(role);
    return new User(list.get(0).get("user_account").toString(),password, authorities);
    }
    }
    }

    4.最后登录得时候就会进行判断和控制:

    输入错误得用户或者不存在得:

     正确跳转:



  • 相关阅读:
    Python3 MySQL 数据库连接
    python3中线程池
    python中paramiko模块和mysql数据库的操作
    linux定制的补充
    linux 定制
    利用BIND搭建自己的私有根及授权域
    Python3下的paramiko模块
    mysql在linux下的安装与优化
    Linux下Nagios的安装与配置
    CentOS 6.7中安装python3.5
  • 原文地址:https://www.cnblogs.com/zz-skill/p/10870335.html
Copyright © 2020-2023  润新知