Bootstrap

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证8)

  为进一步测试通过请求头传递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

;