发表于: 2019-10-17 12:42:42
1 909
今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin)
昨天请了一天假调整生物钟。今天开始写后台管理。
一:完成后台登录退出
//登录
@PostMapping("/a/login")
public ResponseData login(String name, String password) {
logger.error("登录的用户为:"+name+"····密码:"+password);
logger.error("1");
Subject subject = SecurityUtils.getSubject();
logger.error("2");
UsernamePasswordToken token = new UsernamePasswordToken(name, password);
logger.error("3");
try {
subject.login(token);
logger.error("4");
Session session=subject.getSession();
logger.error("5");
session.setAttribute("subject", subject);
logger.error("6");
//登录成功显示相应的权限,这里要查询用户权限:
Map<String, Object> data = new HashMap<>();
logger.error("7");
//登录成功返回该用户的所有信息
Manager manager =managerService.getByName(name);
//只走到这一步····················
logger.error("8");
List<Role> role=roleService.listRoles(name);
//这里返回的是权限名,也可以返回权限url
logger.error("9");
Set<String> ps= permissionService.listPermissions(name);
logger.error("10");
data.put("manager",manager);
data.put("roles",role);
data.put("permissions",ps);
return ResponseDataUtil.buildSuccess("200","success",data);
} catch (AuthenticationException e) {
return ResponseDataUtil.buildError("验证失败");
}
}
二:完成shiro的大体框架
可以正常工作。
三:完成管理员列表接口。
/**
* 管理员列表
* */
@GetMapping("/manager/list")
public ResponseData list(@RequestParam(value = "pageNumber", defaultValue = "0") Integer pageNumber,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize){
//1. 在参数里接受当前是第几页 pageNumber ,以及每页显示多少条数据 size。 默认值分别是1和4。
//2. 根据start,size进行分页,并且设置id 倒排序
PageHelper.startPage(pageNumber,pageSize,"id desc");
//3. 因为PageHelper的作用,这里就会返回当前分页的集合了
List<Manager> managers= managerService.list();
//4. 根据返回的集合,创建PageInfo对象
PageInfo<Manager> page = new PageInfo<>(managers);
//5. 把PageInfo对象扔进map,返回给前端
Map<String, Object> data = new HashMap<>();
data.put("managers", page);
return ResponseDataUtil.buildSuccess("10200","success",data);
}
四、完成增加管理员列表
/**
* 增加管理员页面
* */
@GetMapping("/manager")
public ResponseData managerAddInfo(){
return ResponseDataUtil.buildSuccess("200","success");
}
五、待完成增加管理员接口
/**
* 增加管理员
* */
@PostMapping("/manager")
public ResponseData add(String name, String password){
String salt = new SecureRandomNumberGenerator().nextBytes().toString();
int times = 2;
String algorithmName = "md5";
String encodedPassword = new SimpleHash(algorithmName,password,salt,times).toString();
Manager manager = new Manager();
manager.setName(name);
manager.setPassword(encodedPassword);
manager.setSalt(salt);
manager.setCreateAt(new Date().getTime()/1000);
//获取当前的用户id
Subject subject = SecurityUtils.getSubject();
subject.
manager.setCreateBy(Long.valueOf(1));
int result = managerService.add(manager);
if(result != 1){
return ResponseDataUtil.buildError("添加异常");
}
return ResponseDataUtil.buildSuccess("200","success");
}
考虑怎么在登录的情况下获取当前管理员的信息。
明天计划的事情:(一定要写非常细致的内容)
遇到的问题:(遇到什么困难,怎么解决的)
在完成shiro大体的框架时,出现了较多的问题,最后参考任务八的service和web分离的程序,将所有shiro的配置放在web端。完成shiro的配置。
收获:(通过今天的学习,学到了什么知识)
评论