说明: 由于用户登录之后,后端服务器会返回给前端用户的token信息. 前端需要保存该token.否则请求结束之后,数据将会销毁.
问题: 服务器端的数据应该存储到哪个位置?
**Session:**在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个 Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。有关使用Session 对象的详细信息,请参阅“ASP应用程序”部分的“管理会话”。注意会话状态仅在支持cookie的浏览器中保留。
总结: Session是一种会话的一种机制, 新打开浏览器会建立一个会话机制.在该机制中可以存储数据.在会话的周期内,该数据一直有效. 当会话结束时 之前保存的数据将会被销毁.
Cookie,有时也用其复数形式 Cookies。类型为“小型文本文件”,是某些网站为了辨别用户身份,进行Session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息 [1] 。
场景: 要求用户7天免密登录.
当用户没有登录时,则不允许跳转其他的页面. 只有当用户登录成功之后.才可以跳转页面.
关键点: 检查session中是否有用户登录的token
说明: 编辑路由文件
2.编辑路由内容,写的时候注意顺序位置.
说明: 如果需要查询父子结构的数据,则可以通过parent_id的方式查询子级信息.
/*查询一级权限列表信息*/
SELECT * FROM rights WHERE parent_id=0
/*查询二级权限列表信息*/
SELECT * FROM rights WHERE parent_id=1
/*查询三级权限列表信息*/
SELECT * FROM rights WHERE parent_id=2
@RestController
@CrossOrigin
@RequestMapping("/rights")
public class RightsController {
@Autowired
private RightsService rightsService;
/**
* 需求: 查询权限列表信息 只查询1-2级权限列表信息
* URL: /rights/getRightsList
* 参数: 无
* 返回值: SysResult对象(List集合)
*/
@GetMapping("getRightsList")
public SysResult getRightsList(){
List<Rights> rightsList = rightsService.getRightsList();
return SysResult.success(rightsList);
}
}
@Service
public class RightsServiceImpl implements RightsService{
@Autowired
private RightsMapper rightsMapper;
/**
* 1.查询所有的1级信息 parent_id=0
* 2.查询1级下边的2级信息 parent_id=1级id
* @return
*/
@Override
public List<Rights> getRightsList() {
//1.查询一级权限信息
QueryWrapper<Rights> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("parent_id",0);
List<Rights> oneList = rightsMapper.selectList(queryWrapper);
//2.查询1级下边的二级list集合
for (Rights rights : oneList){
queryWrapper.clear(); //将where条件清空之后重新添加
queryWrapper.eq("parent_id",rights.getId());
List<Rights> children = rightsMapper.selectList(queryWrapper);
rights.setChildren(children);
}
return oneList;
}
}
说明: 要求用户跳转到/home页面时,在右侧默认展现welcome页面
页面效果如下:
用户管理模块主要负责用户相关信息的维护,
1.展现用户列表
2.更新用户列表
3.修改用户的状态
4.删除用户
5.新增用户
/**
* Mysql的分页语法: 1.0版本
* select * from user limit 起始位置0,查询的条数
* Sql: 1页2条 n页数/m条数
* SELECT * FROM USER LIMIT 0,2 第一页
* SELECT * FROM USER LIMIT 2,2 第二页
* SELECT * FROM USER LIMIT 4,2 第三页
* SELECT * FROM USER LIMIT 6,2 第四页
* SELECT * FROM USER LIMIT (n-1)m,m 第N页
* @param pageResult
* @return
*/
@Override
public PageResult getUserList(PageResult pageResult) {//3
//1.获取总记录数
long total = userMapper.selectCount(null);
//2.获取分页后的结果
int pageNum = pageResult.getPageNum(); //页数
int pageSize = pageResult.getPageSize(); //行数
int startIndex = (pageNum-1) * pageSize; //起始位置
List<User> rows = userMapper.getUserList(startIndex,pageSize);
//将数据进行封装
pageResult.setTotal(total).setRows(rows); //+2个参数
return pageResult; //最终5个参数返回
}