zoukankan      html  css  js  c++  java
  • 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.最后登录得时候就会进行判断和控制:

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

     正确跳转:



  • 相关阅读:
    vue项目-百度地图-初始化展示覆盖范围(默认中心点和半径),点击切换中心点,地图落点(带数字)
    echarts地图下钻(全国到省)下钻一次
    JSON取值(key是中文或者数字)方式详解
    Chrome 80跨域cookie无法携带
    将博客搬至CSDN
    Django模板渲染,运行时如果报错:TemplateDoesNotExist at
    使用allure serve查看报告提示allure-results does not exists的解决方法
    jupyter lab不能自动打开浏览器和默认打开chrome浏览器的解决办法
    Chrome浏览器安装SwitchyOmega_Chromium插件,以及导入Burp Suite证书,抓取https请求包
    vue安装
  • 原文地址:https://www.cnblogs.com/zz-skill/p/10870335.html
Copyright © 2011-2022 走看看