ssm-企业权限项目-用户权限操作

显示所有用户.

Controller.

在这里插入图片描述

public class UseController {
    @Autowired
    private IUserService service ;

    @RequestMapping("/findAll")
    public String  findAll(Model model){

         List<UserInfo> userList = service.findAll();
         model.addAttribute("userList",userList);

        return  "user-list";
    }

}

Service.

public interface IUserService extends UserDetailsService  {
    List<UserInfo> findAll();
}

ServiceImpl.

在这里插入图片描述

@Service("userService")
@Transactional
public class UserServiceImpl implements IUserService {

    @Autowired
    private IUserDao userDao;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        UserInfo userInfo = null;
        try {
            userInfo = userDao.findByUsername(username);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //处理自己的用户对象封装成UserDetails
        //  User user=new User(userInfo.getUsername(),"{noop}"+userInfo.getPassword(),getAuthority(userInfo.getRoles()));
        User user = new User(userInfo.getUsername(), "{noop}" + userInfo.getPassword(), userInfo.getStatus() == 0 ? false : true, true, true, true, getAuthority(userInfo.getRoles()));
        return user;
    }

    //作用就是返回一个List集合,集合中装入的是角色描述
    public List<SimpleGrantedAuthority> getAuthority(List<Role> roles) {

        List<SimpleGrantedAuthority> list = new ArrayList<>( );
        for (Role role : roles) {
            list.add(new SimpleGrantedAuthority("ROLE_" + role.getRoleName()));
        }
        return list;
    }

    @Override
    public List<UserInfo> findAll() {
        return userDao.findAll();
    }
}

侧边栏.跳转到Controller层的user/findAll.

在这里插入图片描述

Controller跳转到user-list.jsp页面显示.

在这里插入图片描述

老样子设置状态.

在这里插入图片描述
在这里插入图片描述

添加用户.实现登陆

配置加密类.

在这里插入图片描述

Service.

在这里插入图片描述

public interface IUserService extends UserDetailsService  {
    List<UserInfo> findAll();

    void save(UserInfo userInfo);
}

Impl.

在这里插入图片描述

在这里插入图片描述

/**
 * @Author: 刚满20就秃顶
 * @Code:
 */
/*对应spirng-security配置文件 user-service-ref="userService*/
@Service("userService")
@Transactional
public class UserServiceImpl implements IUserService {

    @Autowired
    private IUserDao userDao;

    @Autowired
    private BCryptPasswordEncoder bCryptPasswordEncoder;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        UserInfo userInfo = null;
        try {
            userInfo = userDao.findByUsername(username);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //处理自己的用户对象封装成UserDetails
        //  User user=new User(userInfo.getUsername(),"{noop}"+userInfo.getPassword(),getAuthority(userInfo.getRoles()));
        User user = new User(userInfo.getUsername(), "{noop}" + userInfo.getPassword(), userInfo.getStatus() == 0 ? false : true, true, true, true, getAuthority(userInfo.getRoles()));
        return user;
    }

    //作用就是返回一个List集合,集合中装入的是角色描述
    public List<SimpleGrantedAuthority> getAuthority(List<Role> roles) {

        List<SimpleGrantedAuthority> list = new ArrayList<>( );
        for (Role role : roles) {
            list.add(new SimpleGrantedAuthority("ROLE_" + role.getRoleName()));
        }
        return list;
    }

    @Override
    public List<UserInfo> findAll() {
        return userDao.findAll();
    }

    @Override
    public void save(UserInfo userInfo) {
        //对密码进行加密
        userInfo.setPassword(bCryptPasswordEncoder.encode(userInfo.getPassword()));
        userDao.save(userInfo);
    }
}

Controller.

在这里插入图片描述

@Controller
@RequestMapping("/user")

public class UseController {
    @Autowired
    private IUserService service ;

    @RequestMapping("/findAll")
    public String  findAll(Model model){

         List<UserInfo> userList = service.findAll();
         model.addAttribute("userList",userList);

        return  "user-list";
    }

    @RequestMapping("save")
    public String save(Model model, UserInfo userInfo){
        service.save(userInfo);
        return  null;
    }
}

在这里插入图片描述

Case .

因为我们数据库Password的长度是50, 但是我们加密后Password的长度是60, 所以需要把数据库中Password的Varchar值变大点

在这里插入图片描述
但是尽管我们在数据库中添加了用户,还是不能通过该用户进行登录.
在这里插入图片描述
因为我们用户登录时密码并没有进行加密.而我们储存进数据库的是加密后的密码.
在spring-security.xml配置加密方式,这样程序才知道该如何去解密.

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

详情.

Controller层.

在这里插入图片描述

@Controller
@RequestMapping("/user")

public class UseController {
    @Autowired
    private IUserService service ;

    @RequestMapping("/findAll")
    public String  findAll(Model model){

         List<UserInfo> userList = service.findAll();
         model.addAttribute("userList",userList);

        return  "user-list";
    }

    @RequestMapping("save")
    public String save(UserInfo userInfo){
        service.save(userInfo);

        return "redirect:findAll";
    }

    @RequestMapping("findById")
    public String findById(Model model,String id ){
        UserInfo userInfo = service.findById(id);
        model.addAttribute("",userInfo);
        return  "user-show";
    }
}

IUserService .

在这里插入图片描述

public interface IUserService extends UserDetailsService  {
    List<UserInfo> findAll();

    void save(UserInfo userInfo);

    UserInfo findById(String id);
}

UserServiceImpl.

在这里插入图片描述

@Service("userService")
@Transactional
public class UserServiceImpl implements IUserService {

    @Autowired
    private IUserDao userDao;

    @Autowired
    private BCryptPasswordEncoder bCryptPasswordEncoder;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        UserInfo userInfo = null;
        try {
            userInfo = userDao.findByUsername(username);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //处理自己的用户对象封装成UserDetails
        //  User user=new User(userInfo.getUsername(),"{noop}"+userInfo.getPassword(),getAuthority(userInfo.getRoles()));
        User user = new User(userInfo.getUsername(),userInfo.getPassword(), userInfo.getStatus() == 0 ? false : true, true, true, true, getAuthority(userInfo.getRoles()));
        return user;
    }

    //作用就是返回一个List集合,集合中装入的是角色描述
    public List<SimpleGrantedAuthority> getAuthority(List<Role> roles) {

        List<SimpleGrantedAuthority> list = new ArrayList<>( );
        for (Role role : roles) {
            list.add(new SimpleGrantedAuthority("ROLE_" + role.getRoleName()));
        }
        return list;
    }

    @Override
    public List<UserInfo> findAll() {
        return userDao.findAll();
    }

    @Override
    public void save(UserInfo userInfo) {
        //对密码进行加密
        userInfo.setPassword(bCryptPasswordEncoder.encode(userInfo.getPassword()));
        System.out.println(userInfo.getPassword());
        userDao.save(userInfo);
    }

    @Override
    public UserInfo findById(String id) {
        return userDao.findById( id);
    }
}

Dao.

在这里插入图片描述

IUserDao.

在这里插入图片描述

public interface IUserDao {

    @Select("select * from users where username=#{username}")
    @Results({
            @Result(id = true, property = "id", column = "id"),
            @Result(property = "username", column = "username"),
            @Result(property = "email", column = "email"),
            @Result(property = "password", column = "password"),
            @Result(property = "phoneNum", column = "phoneNum"),
            @Result(property = "status", column = "status"),
            @Result(property = "roles",column = "id",javaType = java.util.List.class,many = @Many(select = "com.itheima.dao.IRoleDao.findRoleByUserId"))
    })
    public UserInfo findByUsername(String username) throws Exception;


    @Select("select * from users")
    List<UserInfo> findAll();


     @Insert("insert into users(email,username,password,phoneNum,status) values(#{email},#{username},#{password},#{phoneNum},#{status})")
    void save(UserInfo userInfo);


     @Select("select * from users where id  =  #{id}")
     @Results({
              @Result(id = true, property = "id", column = "id"),
            @Result(property = "username", column = "username"),
            @Result(property = "email", column = "email"),
            @Result(property = "password", column = "password"),
            @Result(property = "phoneNum", column = "phoneNum"),
            @Result(property = "status", column = "status"),
            @Result(property = "roles",column = "id",javaType = java.util.List.class,many = @Many(select = "com.itheima.dao.IRoleDao.findRoleByUserId"))
     })
     UserInfo findById(String id);
}

IRoleDao.

在这里插入图片描述

public interface IRoleDao {

    //根据用户id查询出所有对应的角色
    @Select("select * from role where id in (select roleId from users_role where userId=#{userId})")
     @Results({
            @Result(id = true, property = "id", column = "id"),
            @Result(property = "roleName", column = "roleName"),
            @Result(property = "roleDesc", column = "roleDesc"),
            @Result(property = "permissions",column = "id",javaType = java.util.List.class,many = @Many(select = "com.itheima.dao.IPermissionDao.findPermissionByRoleId"))
    })
    public List<Role> findRoleByUserId(String userId) throws Exception;
}

IPermissionDao.

在这里插入图片描述

public interface IPermissionDao {
     @Select("select * from permission where id in (select permissionId from role_permission where roleId=#{id} )")
    public List<Permission> findPermissionByRoleId(String id);
}

向数据库表插入数据

insert into role_permission values('88A32128AFC3414E9DC1E481F51A192A','1111');
insert into role_permission values('5CC0DF5FC3CA4E20B81C96526A960475','1111');
 insert into role_permission values('5CC0DF5FC3CA4E20B81C96526A960475','2222');

在这里插入图片描述

user-show1.jsp

在这里插入图片描述

角色管理页.查询所有角色

Controller层.

在这里插入图片描述

@Controller
@RequestMapping("/role")
public class RoleController {
    @Autowired
    private IRoleService service ;

    @RequestMapping("/findAll")
    public String findAll(Model model){
          List<Role> roleList = service.findAll();
          model.addAttribute("roleList",roleList);
        return  "role-list";

    }
}

service层.

在这里插入图片描述

public interface IRoleService {
    public List<Role> findAll();
}

impl.

@Service
@Transactional
public class RoleServiecImpl implements IRoleService {
    @Autowired
    private IRoleDao dao;
    @Override
    public List<Role> findAll() {
        return dao.findAll();
    }
}

Dao层.

在这里插入代码片
public interface IRoleDao {

    //根据用户id查询出所有对应的角色
    @Select("select * from role where id in (select roleId from users_role where userId=#{userId})")
     @Results({
            @Result(id = true, property = "id", column = "id"),
            @Result(property = "roleName", column = "roleName"),
            @Result(property = "roleDesc", column = "roleDesc"),
            @Result(property = "permissions",column = "id",javaType = java.util.List.class,many = @Many(select = "com.itheima.dao.IPermissionDao.findPermissionByRoleId"))
    })
    public List<Role> findRoleByUserId(String userId) throws Exception;

    @Select("select * from role ")
    List<Role> findAll();
}

跳转到Role-list.jsp

在这里插入图片描述
在这里插入图片描述

角色的添加

在这里插入图片描述

Controller.

在这里插入图片描述

 @RequestMapping("/save")
    public String save(Model model,Role role){
          service.save(role);

        return  "redirect:findAll";

    }

Service.

public interface IRoleService {
    public List<Role> findAll();

    void save(Role role);
}

ServiceImpl.

 @Override
    public void save(Role role) {
        dao.save(role);
    }

Dao.

 @Insert("insert into role(roleName,roleDesc) values(#{roleName},#{roleDesc})")
    void save(Role role);

role-add.jsp
在这里插入图片描述

权限管理

Controller.

@Controller
@RequestMapping("/permission")
public class PermisssionController {
    @Autowired
    private IPermissionService service ;
    @RequestMapping("/findAll")
    public String findAll(Model  model){
         List<Permission> list = service.findAll();
         model.addAttribute("permissionList",list);
        return  "permission-list";
    }
}

Service.

在这里插入图片描述

public interface IPermissionService {

    List<Permission> findAll();
}

Service.

在这里插入图片描述

@Service
@Transactional
public class IPermissionServiceImpl implements IPermissionService {
    @Autowired
    private IPermissionDao dao ;

    @Override
    public List<Permission> findAll() {
        return dao.findAll();
    }
}

Dao.

在这里插入图片描述

public interface IPermissionDao {
     @Select("select * from permission where id in (select permissionId from role_permission where roleId=#{id} )")
    public List<Permission> findPermissionByRoleId(String id);

     @Select("select * from permission")
    List<Permission> findAll();
}

使用role-add.jsp该的permission-list.jsp.

在这里插入图片描述
在这里插入图片描述

资源权限添加

Controller.

在这里插入图片描述


    @RequestMapping("/save")
    public String save(Permission permission ){
         service.save(permission);
         return "redirect:findAll";
    }

Service.

在这里插入图片描述

public interface IPermissionService {

    List<Permission> findAll();

    void save(Permission permission);
}

ServiceImpl.

在这里插入图片描述


    @Override
    public void save(Role role) {
        dao.save(role);
    }

Dao.

在这里插入图片描述

  @Insert("insert into permission(permissionName,url) values(#{permission},#{url})")
    void save(Permission permission);

role-add.jsp改编为permission-add.jsp

在这里插入图片描述
在这里插入图片描述

SSM

发布了24 篇原创文章 · 获赞 2 · 访问量 446

猜你喜欢

转载自blog.csdn.net/tiangoua/article/details/103926994