为进一步测试通过请求头传递token进行身份验证,在main.htm中增加layui的数据表格组件,并调用后台服务分页显示数据,后台分页查询数据接口如下所示(测试时,直接将数据写死到代码中,没有查询数据库),这里需注意返回的状态码需为0,其它值返回到前台都被认为是调用异常。
[Authorize]
[HttpGet]
public async Task<ApiResult> GetDataByPage(int page,int limit)
{
ApiResult result = new ApiResult();
result.StatusCode = 0;
List<User> users = new List<User>();
if(page==1)
{
users.Add(new User { Name="张三",Age=12,Sex="男"});
users.Add(new User { Name = "李四", Age = 32, Sex = "男" });
users.Add(new User { Name = "王五", Age = 22, Sex = "男" });
}
else
{
users.Add(new User { Name = "李磊", Age = 12, Sex = "男" });
users.Add(new User { Name = "韩梅梅", Age = 32, Sex = "女" });
users.Add(new User { Name = "王巧", Age = 22, Sex = "男" });
users.Add(new User { Name = "柳桥", Age = 45, Sex = "男" });
}
Users data = new Users();
data.Data = users;
data.Count = 20;
result.Data = data;
return result;
}
main.html文件的JavaScript代码中使用table.render函数渲染表格数据,需要注意以下两点:
1)render函数中通过设置headers属性添加并传递token,这点在layui的官网文档中没有写,百度相关内容才查到的,具体介绍请见参考文献1;
2)后台数据查询接口返回数据格式与table模块的数据格式不一致,需设置数据映射,否则无法显示返回的数据集合。
主要的JavaScript代码设置如下所示:
table.render({
elem: '#data'
,height: 315
,url: 'https://localhost:7051/Login/GetDataByPage' //数据接口
,headers: {
'Authorization': 'Bearer '+sessionStorage.getItem("token")
}
,parseData: function(res){ // 数据映射处理
return {
"code": res.statusCode,
"msg": res.msg,
"count": res.data.count,
"data": res.data.data
};
}
,page: true
,cols: [[
{field: 'name', title: '用户名', width:80}
,{field: 'sex', title: '性别', width:80, sort: true}
,{field: 'age', title: '年龄', width:80}
]]
});
身份认证成功后,分页显示数据的截图如下所示:
未通过身份认证时,调用后台数据服务则直接显示请求异常,如下图所示:
后续文章准备增加数据库查询,替换现在用户身份认证及数据查询都是写死到代码中的情况,同时搜索并查询基于Cookie传递token的实现方式(目前没找到多少有用的内容)。
参考文献:
[1]https://huaweicloud.csdn.net/63a56328b878a54545946043.html
[2]https://blog.csdn.net/yufengaotian/article/details/82190933