zoukankan      html  css  js  c++  java
  • SpringSecurity进行认证

    不加密认证

     接口类

    public interface UserService extends UserDetailsService {
    
        public void save(SysUser user);
    
        public List<SysUser> findAll();
    
        public Map<String, Object> toAddRolePage(Integer id);
    
        public void addRoleToUser(Integer userId, Integer[] ids);
    }

     Service类

    @Service
    @Transactional
    public class UserServiceImpl implements UserService {
        @Autowired
        private UserDao userDao;
    
        @Autowired
        private RoleService roleService;
    
        public void save(SysUser user) {
            userDao.save(user);
        }
    
        public List<SysUser> findAll() {
            return userDao.findAll();
        }
    
        public Map<String, Object> toAddRolePage(Integer id) {
            List<SysRole> allRoles = roleService.findAll();
            List<Integer> myRoles = userDao.findRolesByUid(id);
            Map<String, Object> map = new HashMap<String, Object> ();
            map.put("allRoles", allRoles);
            map.put("myRoles", myRoles);
            return map;
        }
    
        public void addRoleToUser(Integer userId, Integer[] ids) {
            userDao.removeRoles(userId);
            for (Integer rid : ids) {
                userDao.addRoles(userId, rid);
            }
        }
    
        public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
            SysUser sysUser = userDao.findByName(username);
            if(sysUser==null){
            //若用户名不对,直接返回null,表示认证失败。
                return null;
            }
            List<SimpleGrantedAuthority> authorities = new ArrayList<SimpleGrantedAuthority>();
            List<SysRole> roles = sysUser.getRoles();
            for (SysRole role : roles) {
                authorities.add(new SimpleGrantedAuthority(role.getRoleName()));
            }
            System.out.println(sysUser);
            //最终需要返回一个SpringSecurity的UserDetails对象,{noop}表示不加密认证。
            return new User(sysUser.getUsername(), "{noop}"+sysUser.getPassword(), authorities);
        }
    }

    在SpringSecurity主配置文件中指定认证使用的业务对象

    <!--设置Spring Security认证用户信息的来源-->
    <security:authentication-manager>
         <security:authentication-provider user-service-ref="userServiceImpl">
         </security:authentication-provider>
    </security:authentication-manager>

     登陆

     

     加密认证

     

     测试类:

    public class Test {
    
        public static void main(String[] args) {
            BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
            String encode = passwordEncoder.encode("123");
            //xrvpAkhezroVcZbO2CmyBOIzme1kAhTdGLxGXaCj76UPSm7O5CAca
            System.out.println(encode);
        }
    }
     public void save(SysUser user) {
            user.setPassword(passwordEncoder.encode(user.getPassword()));
            userDao.save(user);
        }

     去掉不加密认证

  • 相关阅读:
    JavaWeb工程中url地址的写法
    java.lang.NoClassDefFoundError
    {"aa":null} 如何能转化为 {"aa":{}}
    IDEA遇到项目包后面出现% classes,% lines covered该怎么解决
    union all 关键字的应用(合并两个查询结果集到同一个结果集)
    IDEA中的,让光标回到上一次停留的地方
    克隆指定的分支:git clone -b 分支名仓库地址
    转载:再难也要向前爬-唐雅薇
    MacBook Pro 新手入门
    转载:不是书评 :《我是一只IT小小鸟》
  • 原文地址:https://www.cnblogs.com/dalianpai/p/12369435.html
Copyright © 2011-2022 走看看