zoukankan      html  css  js  c++  java
  • 个人博客设计记录

    一、使用的中间件

    1. koa

    2. koa-static 实现静态资源服务器

    3. koa-bodyparse 实现body的解析,主要是post请求数据的解析

    4. koa-logger 控制台日志中间件

    5. koa-session-minimal  适用于koa2 的session中间件,提供存储介质的读写接口 ,但真正存储的数据库等配置依赖其他

    6.  koa-mysql-session  为koa-session-minimal中间件提供MySQL数据库的session数据读写操作。

    7.  mysql 实现对mysql数据局的操作

    二、 server目录结构

    codes存取请求返回状态信息

    db存取数据库sql相关文件

    middlewares存取路由的回调中间件,在其中调用services层方法,响应路由请求

    services存取业务逻辑相关函数,调用model层方法,对传入的参数数据和model层方法返回的数据,进行处理

    models存取数据模型相关函数,接受参数,调用utils中的一些方法操作数据库,返回数据,不对数据格式等进行处理,

    utils存取了数据库操作的一些封装方法

    index.js服务器端入口

    serverConfig.js存取数据库服务器相关配置,比如数据库连接配置

    三、session的验证机制

    原理过程:

    session的生成过程:

    对于第一次登陆请求,如果请求成功,则为其设置相应的session信息,比如登陆用户为liyanlei,根据用户名和密码查询到该用户的基本信息,然后按照以下格式设置对应session_data:

    {
       isLogin: true,
       username: 'liyanlei',
       userId: 1    
    }

    然后以某种方式生成一个唯一的session_id,我们可以以键值对的形式理解,其中session_id为key,二session_data为value,将其存入数据库的表中(当然我们也可以为其设置一个expires过期时间,不断添加session信息,经过一段时间后,我们可以根据expires删除过期session,来减少数据库压力)

    最后我们将生成的session_id写入到浏览器端的cookie中(比如说cookie中的USER_SID对应的值极为session_id),并为其设置生存期,当cookie的数据度过生存期后,便会失效。

    根据sesson验证登陆

    浏览器发出各种请求时,会自动携带当前未cookie信息(肯定是未过期的),我们接受请求,获取cookie中的USER_SID(也就是session_id),我们根据sesion_id查询数据库,在保存session信息的表中获取到对应用户的各种信息,也就是session_data,我们根据session_data可以判断当前登录用户是谁,是否之前已经登录过等等信息,具体要看我们在session_data中设置了什么,大概流程就是如期,如果当前登录用户没有已登录,就是要验证用户名和密码,通过后生成session,也就是上边的session生成过程,依次循环。

    使用koa-session-minimal,koa-mysql-session

    对于生成session信息、将session存入cookie、数据库中session的存储和读取这些操作,我们使用koa-session-minimal,koa-mysql-session这两个中间件就可以实现,可以节省我们去封装该功能函数的事件

     四、koa-router的中间件中,如果当前请求时post请求,则在请求的处理中间件函数内通过ctx.redirect跳转页面无效

    五、使用koa中的mysql包连接数据库,查询获取date日期类型的数据格式不对,原因是时区问题,在数据库连接配置中添加如下代码,设置时区即可

    // 设置时区,解决取出数据库中date类型数据格式不对的问题
    timezone : "08:00"

    -------------------------

  • 相关阅读:
    idea安装
    IntelliJ IDEA 简单使用
    git客户端安装
    一、AJAX
    一、JSP标签介绍,自定义标签
    注解
    线程
    网络编程Socket
    一 批量插入数据(使用批处理
    day87
  • 原文地址:https://www.cnblogs.com/Walker-lyl/p/8067633.html
Copyright © 2011-2022 走看看