显示所有用户.
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.
@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 "user-list";
}
}
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 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);
}
Controller
//详情
@RequestMapping("/findById")
public String findById(Model model ,String id){
UserInfo userInfo = service.findById(id);
model.addAttribute("user",userInfo);
return "user-show1";
}
向数据库表插入数据
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 {
@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();
}
Serviceimpl.
@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(Permission permission) {
dao.save(permission);
}
Dao.
@Insert("insert into permission(permissionName,url) values(#{permission},#{url})")
void save(Permission permission);