CN108306877B - 基于node js的用户身份信息的验证方法、装置和存储介质 - Google Patents
基于node js的用户身份信息的验证方法、装置和存储介质 Download PDFInfo
- Publication number
- CN108306877B CN108306877B CN201810091228.4A CN201810091228A CN108306877B CN 108306877 B CN108306877 B CN 108306877B CN 201810091228 A CN201810091228 A CN 201810091228A CN 108306877 B CN108306877 B CN 108306877B
- Authority
- CN
- China
- Prior art keywords
- user
- client
- user name
- password
- service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
Abstract
本发明实施例提供一种基于NODE JS的用户身份信息的验证方法、装置和存储介质,该方法包括:接收用户通过客户端发送的登录请求,登录请求中携带有用户名和密码;将用户名和密码存储至预设数据库中,预设数据库为非关系型数据库;根据用户名和密码生成用户标识,并将用户标识存放在客户端的缓存中;当接收到用户通过客户端发送的访问微服务的请求时,对缓存中的所述用户标识进行解析,获得用户名;在预设数据库中查询用户名对应的用户是否具有访问微服务的权限,并通过restful服务向客户端返回查询结果;其中,预设数据库中存储有用户信息,用户信息包括用户名对应的用户能够访问的微服务。本发明实施例能够提高系统的安全性。
Description
技术领域
本发明实施例涉及计算机技术,尤其涉及一种基于NODE JS的用户身份信息的验证方法、装置和存储介质。
背景技术
越来越多的企业在基于整体应用架构的模式来实现核心业务时,随着的业务发展,数据量和系统越来越臃肿,复杂度提高,熵值增大,难以适应灵活多变的业务需求。在此背景下,微服务架构(Microservices Architecture)应运而生,它放弃了传统大规模的集成式设计理念,改为细粒度、松耦合、可灵活组合的自治单元,这种系统设计理念逐渐成为目前主流的业务系统架构模式。
然而,现有技术中,在微服务架构中,用户通常都是在登录后直接访问所想要访问的微服务即可,这样,可能会存在非法的用户访问微服务系统的现象,从而会造成系统的安全性较低。
发明内容
本发明实施例提供一种基于NODE JS的用户身份信息的验证方法、装置和存储介质,能够提高系统的安全性。
第一方面,本发明实施例提供一种基于NODE JS的用户身份信息的验证方法,包括:
接收用户通过客户端发送的登录请求,所述登录请求中携带有用户名和密码;
将所述用户名和所述密码存储至预设数据库中,所述预设数据库为非关系型数据库;
根据所述用户名和所述密码生成用户标识,并将所述用户标识存放在客户端的缓存中;
当接收到所述用户通过所述客户端发送的访问微服务的请求时,对所述缓存中的所述用户标识进行解析,获得所述用户名;
在所述预设数据库中查询所述用户名对应的用户是否具有访问所述微服务的权限,并通过restful服务向所述客户端返回查询结果;其中,所述预设数据库中存储有用户信息,所述用户信息包括所述用户名对应的用户能够访问的微服务。
可选地,所述接收用户通过客户端发送的登录请求之前,所述方法还包括:
接收所述用户通过所述客户端发送的注册请求,所述注册请求中携带有所述用户名、所述密码和所述用户信息;
建立所述用户名和所述密码之间的对应关系;
将所述用户名和所述密码之间的对应关系以及所述用户信息存储在所述预设数据库中。
可选地,所述将用户名和密码存储至预设数据库中,包括:
通过Crypto模块生成随机数;
对所述密码和所述随机数进行哈希处理,生成哈希值;
将所述用户名和所述哈希值存储至所述预设数据库中。
可选地,所述用户标识包括token,所述客户端的缓存包括Cookie;
所述当接收到所述用户通过所述客户端发送的访问微服务的请求时,对所述缓存中的所述用户标识进行解析,获得所述用户名,包括:
当接收到所述用户通过所述客户端发送的访问微服务的请求时,将所述Cookie中的所述token存入至WEB头部信息中;
从所述WEB头部信息中对所述token进行解析,获得所述用户名。
可选地,所述在所述预设数据库中查询所述用户名对应的用户是否具有访问所述微服务的权限之前,所述方法还包括:
判断所述微服务是否需要登录认证;
得到的判断结果为所述微服务需要登录认证。
可选地,所述用户标识为访问所述微服务时的唯一识别码,所述用户标识用于识别或跟踪用户的访问行为。
可选地,所述方法还包括:
接收所述用户通过所述客户端发送的业务访问请求,所述业务访问请求为访问业务逻辑复杂的服务的请求;
接收所述客户端通过Http_proxy模块发送的Http请求;
根据所述Http请求向所述客户端返回Http响应。
第二方面,本发明实施例提供一种基于NODE JS的用户身份信息的验证装置,包括:
接收模块,用于接收用户通过客户端发送的登录请求,所述登录请求中携带有用户名和密码;
存储模块,用于将所述用户名和所述密码存储至预设数据库中,所述预设数据库为非关系型数据库;
生成模块,用于根据所述用户名和所述密码生成用户标识,并将所述用户标识存放在客户端的缓存中;
解析模块,用于当接收到所述用户通过所述客户端发送的访问微服务的请求时,对所述缓存中的所述用户标识进行解析,获得所述用户名;
发送模块,用于在所述预设数据库中查询所述用户名对应的用户是否具有访问所述微服务的权限,并通过restful服务向所述客户端返回查询结果;其中,所述预设数据库中存储有用户信息,所述用户信息包括所述用户名对应的用户能够访问的微服务。
可选地,所述装置还包括:建立模块;
所述接收模块,还用于接收所述用户通过所述客户端发送的注册请求,所述注册请求中携带有所述用户名、所述密码和所述用户信息;
所述建立模块,用于建立所述用户名和所述密码之间的对应关系;
所述存储模块,还用于将所述用户名和所述密码之间的对应关系以及所述用户信息存储在所述预设数据库中。
可选地,所述存储模块,具体用于:
通过Crypto模块生成随机数;
对所述密码和所述随机数进行哈希处理,生成哈希值;
将所述用户名和所述哈希值存储至所述预设数据库中。
可选地,所述用户标识包括token,所述客户端的缓存包括Cookie;
所述解析模块,具体用于:
当接收到所述用户通过所述客户端发送的访问微服务的请求时,将所述Cookie中的所述token存入至WEB头部信息中;
从所述WEB头部信息中对所述token进行解析,获得所述用户名。
可选地,所述装置还包括:判断模块;
所述判断模块用于判断所述微服务是否需要登录认证,得到的判断结果为所述微服务需要登录认证。
可选地,所述用户标识为访问所述微服务时的唯一识别码,所述用户标识用于识别或跟踪用户的访问行为。
可选地,所述接收模块,还用于接收所述用户通过所述客户端发送的业务访问请求,所述业务访问请求为访问业务逻辑复杂的服务的请求;
所述接收模块,还用于接收所述客户端通过Http_proxy模块发送的Http请求;
所述发送模块,还用于根据所述Http请求向所述客户端返回Http响应。
第三方面,本发明实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现第一方面所述的验证方法。
第四方面,本发明实施例提供一种服务器,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行第一方面所述的验证方法。
本发明提供的基于NODE JS的用户身份信息的验证方法、装置和存储介质,通过接收用户通过客户端发送的登录请求,该登录请求中携带有用户名和密码,服务器将接收到的用户名和密码存储至预设数据库中,并根据用户名和密码生成用户标识,并将用户标识存放在客户端的缓存中,当服务器在接收到用户通过客户端发送的访问微服务的请求时,会对缓存中的用户标识进行解析,获得用户名,并在预设数据库中查询该用户名对应的用户是否具有访问微服务的权限,并通过restful服务向客户端返回查询结果,其中,预设数据库中存储有用户信息,用户信息包括用户名对应的用户能够访问的微服务。由于服务器在解析出登录的用户名后,会在预设数据库中查询该用户名对应的用户是否具有访问微服务的权限,这样,可以有效阻止非法用户访问微服务的现象,从而可以提高系统的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的基于NODE JS的用户身份信息的验证方法的应用场景示意图;
图2为本发明实施例提供的基于NODE JS的用户身份信息的验证方法实施例一的流程示意图;
图3为本发明实施例提供的基于NODE JS的用户身份信息的验证方法实施例二的流程示意图;
图4为本发明实施例提供的基于NODE JS的用户身份信息的验证装置实施例一的结构示意图;
图5为本发明实施例提供的基于NODE JS的用户身份信息的验证装置实施例二的结构示意图;
图6为本发明实施例提供的基于NODE JS的用户身份信息的验证装置实施例三的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在对本发明的具体实施方式进行说明之前,先就一些基本的概念进行解释:
(1)微服务架构
微服务架构是一种技术架构理念,其具有高度的弹性、灵活性和开发运行效率。微服务架构的理念是将一个庞大完整的系统拆分成若干小的服务组件,其中,各组件之间的通讯采用轻量的协议完成,如流行的Restful应用程序编程接口(ApplicationProgramming Interface;API),数据的传输采用JSON格式。
微服务架构的优点包括:业务功能的独立垂直开发机制、统一数据传输格式、异构开发语言、更多的技术选择以及高效的部署机制(自动化部署)等。
(2)NODE JS
目前,随着全栈式开发理念的盛行,前后端分离的Web应用程序的开发开始逐渐成为主流,采用前端和服务器端统一的开发语言,在系统会话管理、静态资源管理中具有很大的优势。可以利用Node.js在服务器构建WEB服务器,同时结合MongoDB非结构性数据库可以实现前后编程语言的统一(JavaScript)和前后台数据格式的统一(JSON),因而在服务端和客户端可以避免多元的数据转换问题。
另外,Node.js可以处理庞大的并且高吞吐量的并发连接。而Node.js仅仅只运行在一个单线程中,使用非阻塞的异步I/O调用,所有连接都由该线程处理,在libuv的加分下,可以允许其支持数万并发连接(全部挂在该线程的事件循环中)。
在现有技术的微服务架构中,用户通常都是在登录后直接访问所想要访问的微服务,这样,可能会存在非法的用户访问微服务系统的现象,从而会造成系统的安全性较低。
因此,本发明实施例提供的基于NODE JS的用户身份信息的验证方法,旨在解决现有技术中在访问微服务时,会造成系统的安全性较低的技术问题。
本发明实施例提供的基于NODE JS的用户身份信息的验证方法,可以应用于在访问微服务时需要进行身份验证的场景中。图1为本发明实施例提供的基于NODE JS的用户身份信息的验证方法的应用场景示意图,如图1所示,当用户需要通过客户端在服务器中访问某个微服务时,可以通过客户端向服务器发送登录请求,该登录请求中携带有用户名和密码,服务器将接收到的用户名和密码存储至预设数据库中,并根据用户名和密码生成用户标识,并将用户标识存放在客户端的缓存中,当服务器在接收到用户通过客户端发送的访问微服务的请求时,会对缓存中的用户标识进行解析,获得用户名,并在预设数据库中查询该用户名对应的用户是否具有访问微服务的权限,并通过restful服务向客户端返回查询结果,其中,预设数据库中存储有用户信息,用户信息包括用户名对应的用户能够访问的微服务。由于服务器在解析出登录的用户名后,会在预设数据库中查询该用户名对应的用户是否具有访问微服务的权限,这样,可以有效阻止非法用户访问微服务的现象,从而可以提高系统的安全性。
下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图2为本发明实施例提供的基于NODE JS的用户身份信息的验证方法实施例一的流程示意图。本发明实施例提供了一种基于NODE JS的用户身份信息的验证方法,该方法可以由任意执行基于NODE JS的用户身份信息的验证方法的装置来执行,该装置可以通过软件和/或硬件实现。本实施例中,该装置可以集成在服务器中。如图2所示,本实施例的方法可以包括:
步骤201、接收用户通过客户端发送的登录请求,该登录请求中携带有用户名和密码。
在本实施例中,客户端可以包括手机、电脑、PAD以及其他能够访问微服务的电子设备。当用户想要通过客户端访问微服务时,可能需要先进行登录,则客户端会向服务器发送登录请求,该登录请求中携带有用户名和密码。
步骤202、将用户名和密码存储至预设数据库中,该预设数据库为非关系型数据库。
在本实施例中,预设数据库为非关系型数据库,在一种可能的实现方式中,该预设数据库可以为MONGODB数据库。服务器在接收到客户端发送的用户名和密码时,利用Mongoose模块以文档的形式存入到MongoDB数据库中,该文档的结构的ID以MongoDB生产的_ID为准。同时,利用Mongoose模块生成计划(Schema),在Schema中设计文档的结构,并在Schema定义了用户密码加密、用户密码验证和用户Token ID生产的方法。在Schema中定义方法,可以直接方便地使用Schema定义的文档的各个字段,避免使用回调函数进行对用户信息的加工。在用户注册和登录时,直接可映射MongoDB数据库,进行数据的存储和修改。由于MONGODB数据库属于内存数据库的一种,因此,相比传统关系型数据库,用户名和密码存储到MONGODB数据库中,可以大幅提高查询效率。
在一种可能的实现方式中,将用户名和密码存储至预设数据库中,包括:通过Crypto模块生成随机数;对密码和随机数进行哈希处理,生成哈希值;将用户名和哈希值存储至预设数据库中。
具体地,为了避免使用单向(不可逆)加密的方式,比如MD5加密方式,生成重复的密码的现象,本发明实施例中利用Crypto模块生成随机数,再利用Node.js dotenv模块生成用户加密的密钥,然后对密码和随机数进行哈希处理,生成哈希值,并将用户名和生成的哈希值存储到预设数据库中。当用户在登录时,服务器只需要比较登录请求中的密码是否和哈希值一样即可。由于服务器会对密码进行加密处理之后再存储至预设数据库中,由此可以提高用户信息的安全性。
步骤203、根据用户名和密码生成用户标识,并将用户标识存放在客户端的缓存中。
在本实施例中,用户标识例如可以为token,客户端的缓存例如可以为cookie,服务器会根据接收到的用户名和密码,生成用户标识,即生成token,并将生成的token返回给客户端,以存储在客户端的缓存中,如存储在客户端的cookie中。
其中,用户标识,即token为访问微服务时的唯一识别码,该token用于识别或跟踪用户的访问行为。
步骤204当接收到用户通过客户端发送的访问微服务的请求时,对缓存中的用户标识进行解析,获得用户名。
在本实施例中,当用户想要访问某个微服务时,将会通过客户端向服务器发送访问微服务的请求,服务器在接收到该请求后,会对客户端的缓存中的用户标识进行解析。例如:服务器会对客户端的cookie中的token进行解析,从而可以获得token中的用户名。
在一种可能的实现方式中,在用户标识包括token,客户端的缓存包括Cookie时,当接收到用户通过客户端发送的访问微服务的请求时,对缓存中的用户标识进行解析,获得用户名,包括:当接收到用户通过客户端发送的访问微服务的请求时,将Cookie中的token存入至WEB头部信息中,并从WEB头部信息中对token进行解析,获得用户名。
具体地,服务器会利用JsonWebtoken模块,根据来自于MongoDB中的用户_id、用户提供唯一码、过期时间等信息可以生成token,其中,生成的token由三部分构成,第一部分是一个编码之后的JSON对象,这个JSON对象包含了Hash算法和类型,第二部分也是编码后的JSON对象,也即令牌数据,第三部分是一个签名,该签名的密码保存在服务器中。
由于在Web服务器端生产的Token中,就包含用户的用户名,因此,在获取用户名时,可以避免跨服务器从Session中获取服务器的现象。
另外,在token生成之后,本发明实施例中会将Token的ID存入到客户端的Cookie中,反馈到Web端。当用户访问微服务时,登录请求中会携带该Cookie,服务器会在后台读取Http的Cookie信息,并将Cookie中的token加载到WEB的头部信息(Header)中。基于Express架构,服务器会自动从WEB的头部信息(Header)中读取token,并对token进行解析,以获得用户名。
步骤205、在预设数据库中查询用户名对应的用户是否具有访问微服务的权限,并通过restful服务向客户端返回查询结果;其中,该预设数据库中存储有用户信息,用户信息包括用户名对应的用户能够访问的微服务。
在本实施例中,用户在通过客户端进行信息注册时,会将其能够访问的微服务一并存储在预设数据库中,当服务器通过解析用户标识得到用户名之后,会通过WEB中间件在预设数据库中查询该用户名对应的用户是否能够访问该微服务,即该用户是否具有访问该微服务的权限,如果有,则将查询的结果通过restful服务返回给客户端,如果没有,则不会向客户端返回任何结果,这样,客户端将可以及时的阻止非法用户对微服务的访问,从而可以有效提高系统的安全性。
在一种可能的实现方式中,在预设数据库中查询用户名对应的用户是否具有访问微服务的权限之前,还需要判断微服务是否需要登录认证,当判断结果为微服务需要登录认证时,将在预设数据库中查询用户名对应的用户是否具有访问微服务的权限。
具体地,为了认证登录权限,本实施例中在Http访问路由中设置了两层,第一层是判断该微服务是否需要用户登录认证,第二层是利用express-jwt模块来认证用户的访问权限,判断该用户是否具备访问该微服务的资格。当判断出需要进行登录认证时,再会利用express-jwt模块来认证用户的访问权限。需要进行说明的是,express-jwt模块进行访问认证权限时,必须要将Token ID存储到WEB头部信息中,同时,用户Token ID生成的加密方式,必须也同express-jwt配置一致。
本发明实施例提供的基于NODE JS的用户身份信息的验证方法,通过接收用户通过客户端发送的登录请求,该登录请求中携带有用户名和密码,服务器将接收到的用户名和密码存储至预设数据库中,并根据用户名和密码生成用户标识,并将用户标识存放在客户端的缓存中,当服务器在接收到用户通过客户端发送的访问微服务的请求时,会对缓存中的用户标识进行解析,获得用户名,并在预设数据库中查询该用户名对应的用户是否具有访问微服务的权限,并通过restful服务向客户端返回查询结果,其中,预设数据库中存储有用户信息,用户信息包括用户名对应的用户能够访问的微服务。由于服务器在解析出登录的用户名后,会在预设数据库中查询该用户名对应的用户是否具有访问微服务的权限,这样,可以有效阻止非法用户访问微服务的现象,从而可以提高系统的安全性。
图3为本发明实施例提供的基于NODE JS的用户身份信息的验证方法实施例二的流程示意图。本发明实施例在图2所示实施例的基础上,对在接收用户通过客户端发送的登录请求之前,需要先对用户名和密码进行注册的实施例进行详细说明。如图3所示,本实施例的方法可以包括:
步骤301、接收用户通过客户端发送的注册请求,该注册请求中携带有用户名、密码和用户信息。
在本发明实施例中,用户在登录微服务系统之前,需要先进行注册。具体地,可以通过客户端向服务器发送注册请求,其中,该注册请求中包括有用户想要注册的用户名以及对应的密码,另外,在进行注册时,该注册请求中还会携带有该用户能够访问的所有微服务的信息。
步骤302、建立用户名和密码之间的对应关系。
在本发明实施例中,服务器在接收到注册请求后,会将注册请求中的用户名和密码建立对应关系,以使用户名和密码一一对应。
步骤303、将用户名和密码之间的对应关系以及用户信息存储在预设数据库中。
在本发明实施例中,在建立用户名和密码之间的对应关系之后,会将建立的对应关系以及用于指示用户能够访问的微服务的用户信息存储在预设数据库中,其中,该预设数据库可以为MONGODB数据库,由于MONGODB数据库为内存数据库,由此可以提高数据的查询效率。
本发明实施例提供的基于NODE JS的用户身份信息的验证方法,通过接收用户通过客户端发送的登录请求,该登录请求中携带有用户名和密码,服务器将接收到的用户名和密码存储至预设数据库中,并根据用户名和密码生成用户标识,并将用户标识存放在客户端的缓存中,当服务器在接收到用户通过客户端发送的访问微服务的请求时,会对缓存中的用户标识进行解析,获得用户名,并在预设数据库中查询该用户名对应的用户是否具有访问微服务的权限,并通过restful服务向客户端返回查询结果,其中,预设数据库中存储有用户信息,用户信息包括用户名对应的用户能够访问的微服务。由于服务器在解析出登录的用户名后,会在预设数据库中查询该用户名对应的用户是否具有访问微服务的权限,这样,可以有效阻止非法用户访问微服务的现象,从而可以提高系统的安全性。另外,服务器会将接收到的用户名、密码和用户信息存储在预设数据库中,由于预设数据库为内存数据库,由此可以提高数据的查询效率。
在上述各实施例的基础上,该方法还包括:接收用户通过客户端发送的业务访问请求,该业务访问请求为访问业务逻辑复杂的服务的请求;接收客户端通过Http_proxy模块发送的Http请求;根据Http请求向客户端返回Http响应。
具体地,本发明实施例中通过以下两种形式提供微服务:第一种方式是将非关系型数据直接存储到MongoDB数据库,如用户名和密码等非关系型数据,该方法基于Mongoose技术,构建Express框架和MongoDB之间的I/O操作,该方法基于Express框架,构建RestfulAPI风格的形式,推送微服务,第二种方式是,对于关系型数据库,尤其业务逻辑比较复杂的服务请求,会基于Spring Boot微服务框架,提供用户服务。在Express框架中,参照Nginx中间件的模式,采用反向代理的方式,直接在Node js的Express框架中,将用户登录信息进行权限认证后利用Http_proxy模块代理Http请求提供服务。由于将非关系型数据直接存储到MongoDB数据库,将业务逻辑比较复杂的服务请求的数据存储到关系型数据库中,由此可以提高数据查询的效率。
另外,在本发明实施例中,在整个框架中,所有的数据模型全部是采用JSON格式,由此可以降低数据转换的成本。
图4为本发明实施例提供的基于NODE JS的用户身份信息的验证装置实施例一的结构示意图,如图4所示,该装置包括:接收模块11、存储模块12、生成模块13、解析模块14和发送模块15。
接收模块11用于接收用户通过客户端发送的登录请求,所述登录请求中携带有用户名和密码;
存储模块12用于将所述用户名和所述密码存储至预设数据库中,所述预设数据库为非关系型数据库;
生成模块13用于根据所述用户名和所述密码生成用户标识,并将所述用户标识存放在客户端的缓存中;
解析模块14用于当接收到所述用户通过所述客户端发送的访问微服务的请求时,对所述缓存中的所述用户标识进行解析,获得所述用户名;
发送模块15用于在所述预设数据库中查询所述用户名对应的用户是否具有访问所述微服务的权限,并通过restful服务向所述客户端返回查询结果;其中,所述预设数据库中存储有用户信息,所述用户信息包括所述用户名对应的用户能够访问的微服务。
本实施例中提供的基于NODE JS的用户身份信息的验证装置,可以用于执行前述图2中方法实施例的技术方案,其实现原理和技术效果与方法实施例类似,在此不再赘述。
图5为本发明实施例提供的基于NODE JS的用户身份信息的验证装置实施例二的结构示意图,在图4所示实施例的基础上,该装置还包括:建立模块16。
所述接收模块11还用于接收所述用户通过所述客户端发送的注册请求,所述注册请求中携带有所述用户名、所述密码和所述用户信息;
所述建立模块16用于建立所述用户名和所述密码之间的对应关系;
所述存储模块12还用于将所述用户名和所述密码之间的对应关系以及所述用户信息存储在所述预设数据库中。
本实施例中提供的基于NODE JS的用户身份信息的验证装置,可以用于执行前述图3中方法实施例的技术方案,其实现原理和技术效果与方法实施例类似,在此不再赘述。
可选地,所述存储模块12具体用于:
通过Crypto模块生成随机数;
对所述密码和所述随机数进行哈希处理,生成哈希值;
将所述用户名和所述哈希值存储至所述预设数据库中。
可选地,所述用户标识包括token,所述客户端的缓存包括Cookie;
所述解析模块14具体用于:
当接收到所述用户通过所述客户端发送的访问微服务的请求时,将所述Cookie中的所述token存入至WEB头部信息中;
从所述WEB头部信息中对所述token进行解析,获得所述用户名。
图6为本发明实施例提供的基于NODE JS的用户身份信息的验证装置实施例三的结构示意图,在图4所示实施例的基础上,该装置还包括:判断模块17。
所述判断模块17用于判断所述微服务是否需要登录认证,得到的判断结果为所述微服务需要登录认证。
可选地,所述用户标识为访问所述微服务时的唯一识别码,所述用户标识用于识别或跟踪用户的访问行为。
可选地,所述接收模块11还用于接收所述用户通过所述客户端发送的业务访问请求,所述业务访问请求为访问业务逻辑复杂的服务的请求;
所述接收模块11还用于接收所述客户端通过Http_proxy模块发送的Http请求;
所述发送模块15还用于根据所述Http请求向所述客户端返回Http响应。
本实施例中提供的基于NODE JS的用户身份信息的验证装置,可以用于执行前述任一方法实施例的技术方案,其实现原理和技术效果与方法实施例类似,在此不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (9)
1.一种基于NODE JS的用户身份信息的验证方法,其特征在于,包括:
接收用户通过客户端发送的登录请求,所述登录请求中携带有用户名和密码;
将所述用户名和所述密码存储至预设数据库中,所述预设数据库为非关系型数据库;其中,所述预设数据库为MONGODB数据库,所述用户名和所述密码利用Mongoose模块以文档形式存入到所述MONGODB数据库中;
根据所述用户名和所述密码生成用户标识,并将所述用户标识存放在客户端的缓存中;
当接收到所述用户通过所述客户端发送的访问微服务的请求时,对所述缓存中的所述用户标识进行解析,获得所述用户名;在所述预设数据库中查询所述用户名对应的用户是否具有访问所述微服务的权限,并通过restful服务向所述客户端返回查询结果;其中,所述预设数据库中存储有用户信息,所述用户信息包括所述用户名对应的用户能够访问的微服务;
所述将用户名和密码存储至预设数据库中,包括:
通过Crypto模块生成随机数;
对所述密码和所述随机数进行哈希处理,生成哈希值;
将所述用户名和所述哈希值存储至所述预设数据库中。
2.根据权利要求1所述的方法,其特征在于,所述接收用户通过客户端发送的登录请求之前,所述方法还包括:
接收所述用户通过所述客户端发送的注册请求,所述注册请求中携带有所述用户名、所述密码和所述用户信息;
建立所述用户名和所述密码之间的对应关系;
将所述用户名和所述密码之间的对应关系以及所述用户信息存储在所述预设数据库中。
3.根据权利要求1或2所述的方法,其特征在于,所述用户标识包括token,所述客户端的缓存包括Cookie;
所述当接收到所述用户通过所述客户端发送的访问微服务的请求时,对所述缓存中的所述用户标识进行解析,获得所述用户名,包括:
当接收到所述用户通过所述客户端发送的访问微服务的请求时,将所述Cookie中的所述token存入至WEB头部信息中;
从所述WEB头部信息中对所述token进行解析,获得所述用户名。
4.根据权利要求1或2所述的方法,其特征在于,所述在所述预设数据库中查询所述用户名对应的用户是否具有访问所述微服务的权限之前,所述方法还包括:
判断所述微服务是否需要登录认证;
得到的判断结果为所述微服务需要登录认证。
5.根据权利要求1或2所述的方法,其特征在于,所述用户标识为访问所述微服务时的唯一识别码,所述用户标识用于识别或跟踪用户的访问行为。
6.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
接收所述用户通过所述客户端发送的业务访问请求,所述业务访问请求为访问业务逻辑复杂的服务的请求;
接收所述客户端通过Http_proxy模块发送的Http请求;
根据所述Http请求向所述客户端返回Http响应。
7.一种基于NODE JS的用户身份信息的验证装置,其特征在于,包括:
接收模块,用于接收用户通过客户端发送的登录请求,所述登录请求中携带有用户名和密码;
存储模块,用于将所述用户名和所述密码存储至预设数据库中,所述预设数据库为非关系型数据库;其中,所述预设数据库为MONGODB数据库,所述用户名和所述密码利用Mongoose模块以文档形式存入到所述MONGODB数据库中;
生成模块,用于根据所述用户名和所述密码生成用户标识,并将所述用户标识存放在客户端的缓存中;
解析模块,用于当接收到所述用户通过所述客户端发送的访问微服务的请求时,对所述缓存中的所述用户标识进行解析,获得所述用户名;
发送模块,用于在所述预设数据库中查询所述用户名对应的用户是否具有访问所述微服务的权限,并通过restful服务向所述客户端返回查询结果;其中,所述预设数据库中存储有用户信息,所述用户信息包括所述用户名对应的用户能够访问的微服务;
所述存储模块,具体用于:
通过Crypto模块生成随机数;
对所述密码和随机数进行哈希处理,生成哈希值;
将所述用户名和所述哈希值存储至所述预设数据库中。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-6任一项所述的验证方法。
9.一种服务器,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-6任一项所述的验证方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810091228.4A CN108306877B (zh) | 2018-01-30 | 2018-01-30 | 基于node js的用户身份信息的验证方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810091228.4A CN108306877B (zh) | 2018-01-30 | 2018-01-30 | 基于node js的用户身份信息的验证方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108306877A CN108306877A (zh) | 2018-07-20 |
CN108306877B true CN108306877B (zh) | 2020-11-10 |
Family
ID=62867272
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810091228.4A Active CN108306877B (zh) | 2018-01-30 | 2018-01-30 | 基于node js的用户身份信息的验证方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108306877B (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109033805B (zh) * | 2018-09-30 | 2023-05-19 | 山东电工电气集团新能科技有限公司 | 带微服务授权认证功能的智能配电终端及授权认证方法 |
CN109359449B (zh) * | 2018-10-17 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 一种基于微服务的鉴权方法、装置、服务器及存储介质 |
CN109818836B (zh) * | 2018-11-08 | 2021-12-14 | 平安科技(深圳)有限公司 | 服务接入方法、装置、计算机设备及计算机存储介质 |
CN111262821A (zh) * | 2018-12-01 | 2020-06-09 | 星际空间(天津)科技发展有限公司 | 一种基于微服务的认证鉴权方法 |
CN109327477A (zh) * | 2018-12-06 | 2019-02-12 | 泰康保险集团股份有限公司 | 认证鉴权方法、装置及存储介质 |
CN109815683B (zh) * | 2018-12-29 | 2021-09-14 | 深圳云天励飞技术有限公司 | 权限验证方法及相关装置 |
CN110012020A (zh) * | 2019-04-11 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 一种服务器认证方法、系统、设备及计算机可读存储介质 |
CN111478935B (zh) * | 2019-12-16 | 2021-03-30 | 马上消费金融股份有限公司 | 资源访问方法、网间连接装置、系统和装置 |
CN111447220B (zh) * | 2020-03-26 | 2022-08-23 | 金蝶软件(中国)有限公司 | 认证信息管理方法、应用系统的服务端及计算机存储介质 |
CN113704080A (zh) * | 2020-05-22 | 2021-11-26 | 北京沃东天骏信息技术有限公司 | 一种自动化测试方法和装置 |
CN111787007B (zh) * | 2020-06-30 | 2022-09-16 | 北京天融信网络安全技术有限公司 | 信息处理方法、装置、电子设备及存储介质 |
CN111914223B (zh) * | 2020-07-28 | 2023-10-24 | 杭州浙大东南土地研究所有限公司 | 一种城乡国土资源数据一体化管理方法、系统、以及存储介质 |
CN112153012B (zh) * | 2020-09-01 | 2021-07-06 | 珠海市卓轩科技有限公司 | 多端触点接入方法、装置及存储介质 |
CN112162996A (zh) * | 2020-09-23 | 2021-01-01 | 金现代信息产业股份有限公司 | 站内图编辑器的数据库访问方法与系统 |
CN112380522A (zh) * | 2020-11-11 | 2021-02-19 | 深圳供电局有限公司 | 一种综合业务移动应用的管理系统及方法 |
CN112527835B (zh) * | 2020-12-04 | 2023-07-11 | 平安科技(深圳)有限公司 | 基于缓存的认证请求处理方法、装置及相关设备 |
CN112653556B (zh) * | 2020-12-24 | 2022-09-23 | 光大兴陇信托有限责任公司 | 一种基于token的微服务安全认证方法、装置、存储介质 |
CN112769828B (zh) * | 2021-01-11 | 2022-12-02 | 广西洪堡智链科技有限公司 | 一种基于sanic异步微服务方法 |
CN112733001B (zh) * | 2021-01-14 | 2023-09-29 | 上海蓝云网络科技有限公司 | 获取订阅信息的方法、装置和电子设备 |
CN113032749A (zh) * | 2021-03-03 | 2021-06-25 | 北京读我网络技术有限公司 | 一种同步鉴权方法及装置 |
CN112966242A (zh) * | 2021-03-29 | 2021-06-15 | 成都卫士通信息产业股份有限公司 | 一种用户名口令认证方法、装置、设备及可读存储介质 |
CN113132365A (zh) * | 2021-04-07 | 2021-07-16 | 武汉光庭信息技术股份有限公司 | 车载T-Box的通信安全保护方法及系统 |
CN113448587B (zh) * | 2021-05-08 | 2023-11-03 | 北京中数创新科技股份有限公司 | 一种基于标识解析架构的信息路由系统及方法 |
CN114338682A (zh) * | 2021-12-24 | 2022-04-12 | 北京字节跳动网络技术有限公司 | 流量身份标识传递方法、装置、电子设备及存储介质 |
CN115203676B (zh) * | 2022-09-06 | 2023-01-03 | 北京圣博润高新技术股份有限公司 | 一种数据库连接方法、装置、代理服务器和介质 |
CN115208693B (zh) * | 2022-09-09 | 2022-12-20 | 中国电子科技集团公司第十五研究所 | 一种基于微服务的安全访问控制方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103532981A (zh) * | 2013-10-31 | 2014-01-22 | 中国科学院信息工程研究所 | 一种面向多租户的身份托管鉴权云资源访问控制系统及控制方法 |
CN103841117A (zh) * | 2014-03-21 | 2014-06-04 | 北京京东尚科信息技术有限公司 | 一种基于Cookie机制的JAAS登录方法和服务器 |
CN104506542A (zh) * | 2014-12-29 | 2015-04-08 | 深圳中兴网信科技有限公司 | 安全认证方法和安全认证系统 |
CN106302490A (zh) * | 2016-08-23 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种基于Token的Web会话构建和服务调用方法 |
WO2017038019A1 (en) * | 2015-09-01 | 2017-03-09 | Canon Kabushiki Kaisha | Authentication server, authentication method, and program |
-
2018
- 2018-01-30 CN CN201810091228.4A patent/CN108306877B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103532981A (zh) * | 2013-10-31 | 2014-01-22 | 中国科学院信息工程研究所 | 一种面向多租户的身份托管鉴权云资源访问控制系统及控制方法 |
CN103841117A (zh) * | 2014-03-21 | 2014-06-04 | 北京京东尚科信息技术有限公司 | 一种基于Cookie机制的JAAS登录方法和服务器 |
CN104506542A (zh) * | 2014-12-29 | 2015-04-08 | 深圳中兴网信科技有限公司 | 安全认证方法和安全认证系统 |
WO2017038019A1 (en) * | 2015-09-01 | 2017-03-09 | Canon Kabushiki Kaisha | Authentication server, authentication method, and program |
CN106302490A (zh) * | 2016-08-23 | 2017-01-04 | 浪潮电子信息产业股份有限公司 | 一种基于Token的Web会话构建和服务调用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108306877A (zh) | 2018-07-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108306877B (zh) | 基于node js的用户身份信息的验证方法、装置和存储介质 | |
US10957326B2 (en) | Device identifier dependent operation processing of packet based data communication | |
US11736469B2 (en) | Single sign-on enabled OAuth token | |
KR102029277B1 (ko) | 패킷 기반 데이터 통신의 디바이스 식별자 의존적 오퍼레이션 프로세싱 | |
US10880292B2 (en) | Seamless transition between WEB and API resource access | |
US10057251B2 (en) | Provisioning account credentials via a trusted channel | |
CN109067728B (zh) | 应用程序接口的访问控制方法、装置、服务器及存储介质 | |
CN111556006B (zh) | 第三方应用系统登录方法、装置、终端及sso服务平台 | |
US11425047B2 (en) | Traffic analysis method, common service traffic attribution method, and corresponding computer system | |
US20190082026A1 (en) | Interface invocation method and apparatus for hybrid cloud | |
US9240886B1 (en) | Authentication adaptation | |
US9503447B2 (en) | Secure communication between processes in cloud | |
TWI678909B (zh) | 安全認證方法、裝置及系統 | |
CN115021991A (zh) | 未经管理的移动设备的单点登录 | |
CN110521182B (zh) | 用于协议级身份映射的方法和系统 | |
CN105049427A (zh) | 应用系统登录账号的管理方法及装置 | |
CN111177246A (zh) | 一种业务数据的处理方法及装置 | |
CN111865882A (zh) | 一种微服务认证方法和系统 | |
Kornienko et al. | The Single Page Application architecture when developing secure Web services | |
CN108347471B (zh) | 获取第三方用户信息的方法、装置及系统 | |
CN109327864A (zh) | 流量处理方法、装置、设备及存储介质 | |
CN112929453B (zh) | 一种共享session数据的方法和装置 | |
CN114338682A (zh) | 流量身份标识传递方法、装置、电子设备及存储介质 | |
CN112738069B (zh) | 一种基于有状态和无状态认证机制的融合方法、系统及服务器 | |
CN104363279B (zh) | 提供服务的方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |