CN115080278A - 基于方法参数获取当前登录用户信息的方法及系统 - Google Patents
基于方法参数获取当前登录用户信息的方法及系统 Download PDFInfo
- Publication number
- CN115080278A CN115080278A CN202210872063.0A CN202210872063A CN115080278A CN 115080278 A CN115080278 A CN 115080278A CN 202210872063 A CN202210872063 A CN 202210872063A CN 115080278 A CN115080278 A CN 115080278A
- Authority
- CN
- China
- Prior art keywords
- user
- parameter
- user information
- web
- information
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- 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/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明涉及一种基于方法参数获取当前登录用户信息的方法及系统,该方法包括步骤:实现一个用于查询用户信息的sdk包,在sdk包中定义一个Web拦截器;利用该Web拦截器调用获取用户信息的restApi,以便从用户系统中获取用户信息,并将用户系统返回的用户信息绑定到request对象中;实现参数解析器接口,将Web拦截器中绑定的用户对象从request中取出并返回给调用方的Web方法参数;调用方引用sdk包,并配置拦截路径,在Web方法参数中直接将用户对象作为参数,获取到用户信息。通过本发明,调用方通过一个参数即可以获取登录用户的用户信息,操作方便,且大大提升了效率。
Description
技术领域
本发明涉及微服务技术领域,特别涉及一种基于方法参数获取当前登录用户信息的方法及系统。
背景技术
微服务化后,应用获取登录用户的详细信息,一般通过调用restApi方式请求登录用户系统,或者用户登录时将用户信息保存到cookie或者redis中,其他微服务系统去读取。这样做的缺点是,欲获取用户信息的微服务系统需要预先知道获取用户信息的api或者用户信息的存储位置,再进行解析,操作比较繁琐,而且不同微服务系统调用时工作重复。
发明内容
本发明的目的在于提供一种基于方法参数获取当前登录用户信息的方法及系统,以简化用户信息的获取操作。
为了实现上述发明目的,本发明实施例提供了以下技术方案:
一方面,本发明实施例提供了一种基于方法参数获取当前登录用户信息的方法,包括以下步骤:
实现一个用于查询用户信息的sdk包,在sdk包中定义一个Web拦截器;
利用该Web拦截器调用获取用户信息的restApi,以便从用户系统中获取用户信息,并将用户系统返回的用户信息绑定到request对象中;
实现参数解析器接口,将Web拦截器中绑定的用户信息从request对象中取出并返回给调用方的方法参数;
调用方引用sdk包,并配置拦截路径,在方法参数中直接将用户对象作为参数,获取到用户信息。
上述方案中,前面三个步骤都是sdk包中先准备实现好的,第四个步骤是实际应用时执行的,每个需要获取用户信息的微服务系统,只需要操作第四个步骤即可。也就是说,通过前面上个步骤的准备,在实际应用时调用方只需要引用sdk包,配置拦截路径,在方法参数中直接将用户对象作为参数即可获取到当前登录用户的用户信息,极大地简化了操作流程,继而也提高了处理效率。
在一种实现方式中,所述参数解析器接口为Spring 的HandlerMethodArgumentResolver接口。
在一种实现方式中,所述将Web拦截器中绑定的用户对象从request中取出并返回给调用方的方法参数的操作为:获取request中绑定的用户信息,赋值给调用方的add方法中的CurrentSystemUser userWrapper参数(参照代码1);
所述在方法参数中直接将用户对象作为参数的操作为:在调用方的add方法参数中直接使用用户对象参数userWrapper。
在一种实现方式中,所述调用方引用sdk包的操作为:调用方在maven或gradle文件中引入获取用户信息的jar包。
另一方面,本发明实施例公开了一种基于方法参数获取当前登录用户信息的系统,包括以下模块:
sdk包实现模块,用于实现一个用于查询用户信息的sdk包,并在sdk包中定义一个Web拦截器以便供调用方引用;
对象绑定模块,用于利用该Web拦截器调用获取用户信息的restApi,以便从用户系统中获取用户信息,并将用户系统返回的用户信息绑定到request对象中;
解析接口实现模块,用于实现参数解析器接口,并将Web拦截器中绑定的用户信息从request对象中取出并返回给调用方的方法参数;
方法参数配置模块,用于调用方引用sdk包,并配置拦截路径,在方法参数中直接将用户对象作为参数,获取到用户信息。
与现有技术相比,通过本发明方法或系统,当某应用需要获取登录用户的用户信息时,只需要引用sdk包,在方法参数中将用户对象作为参数即可,极大地简化了获取信息的流程。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍, 应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为基于方法参数获取当前登录用户信息的方法流程图。
图2为基于方法参数获取当前登录用户信息的系统的组成框图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本实施例提供的基于方法参数获取当前登录用户信息的方法,包括以下步骤:
S10,实现一个用于查询用户信息的sdk包,在sdk包中定义一个Web拦截器(即sdk包中包含一个Web拦截器),以便供调用方(需要获取用户信息的微服务系统)引用。
sdk(Sofare Development Kit)包,是java应用程序中实现了特定功能的程序包。作为举例,定义Web拦截器的实现代码为:
public final class PortalOAuthInterceptor implementsHandlerInterceptor, ApplicationContextAware {
}
S20,利用该Web拦截器调用获取用户信息的restApi,以便从用户系统中获取用户信息,并将用户系统返回的用户信息绑定到request对象中。
Web拦截器可以通过FeignClient方式或者Spring RestTemplate或其他方式调用获取用户(用户系统)接口,继而获取用户信息。
需要注意的是,用户系统返回的用户信息是当前登录用户的基本信息,如登录账号、姓名、邮箱、手机号、归属等,是调用方最常用到的信息,不一定是用户的全部信息。
request是用来获取一次请求中消息数据,可以绑定数据request.setAttribute(PORTAL_CURRENT_SYSTEM_USER, currentSystemUser);将用户对象绑定进去。用户对象是包含了用户信息的一个集合。
S30,实现参数解析器接口,将Web拦截器中绑定的用户对象从request中取出并返回给调用方的Web方法参数。参数解析器接口例如可以是Spring 的HandlerMethodArgumentResolver接口。
参数解析器接口是为了解析想要获取用户信息的微服务系统中的Web方法,Web方法中使用了封装的用户对象CurrentSystemUser,而参数解析器拦截后为此CurrentSystemUser赋值,这样Web方法中才能得到用户信息。覆盖了参数解析resolveArgument方法,当调用方(需要获取用户信息的微服务方)在Web方法参数中注入此用户对象(如下面代码中的CurrentSystemUser用户时),resolveArgument将会被调用执行,从request对象中获取用户对象并返回给调用方的Web方法参数。
作为举例,参数解析器接口的实现代码如下:
public class CurrentSystemUserMethodArgumentResolver implementsHandlerMethodArgumentResolver {
@Override
public boolean supportsParameter(MethodParameter parameter) {
// 如果参数类型是CurrentSystemUser,
// 这里需要注意:CurrentSystemUser.class.isAssignableFrom()
return CurrentSystemUser.class.isAssignableFrom(parameter.getParameterType());
}
@Override
public Object resolveArgument(MethodParameter parameter,ModelAndViewContainer mavContainer, NativeWebRequest webRequest,WebDataBinderFactory binderFactory) throws Exception {
CurrentSystemUser currentSystemUser = (CurrentSystemUser)webRequest
.getAttribute(PortalOAuthInterceptor.PORTAL_CURRENT_SYSTEM_USER, RequestAttributes.SCOPE_REQUEST);
return currentSystemUser;
}
}
S40,调用方引用sdk包,并配置拦截路径,在Web方法参数中直接将用户对象作为参数,即可获取到用户信息。
调用方引用sdk包的实现,可以是在构建maven或gradle文件中直接引入SDK打的jar包。
在方法参数中直接将用户对象作为参数的代码实现为:
代码1:
public void add(@Validated ApplicationOwnerForm form, @ApiIgnoreCurrentSystemUser userWrapper) {}。
代码解释: 如微服务系统添加一个Application(应用)的操作,需要获取用户信息,方法中的ApplicationOwnerForm form 是应用信息,CurrentSystemUser userWrapper则是用户对象信息,在sdk的参数解析器中已经被赋值过,所以这里CurrentSystemUseruserWrapper是有内容值的。
因为步骤S30中的参数解析器的自定义实现,从request中获取了用户信息对象,返回给了调用方的方法参数中,因此本步骤中只需要在Web方法参数中直接将用户对象作为参数,即可获取到用户信息。
请参阅图2,基于相同的发明构思,本实施例中同时提供了基于方法参数获取当前登录用户信息的系统,从一种可实现的功能角度划分,包括:sdk包实现模块、对象绑定模块、解析接口实现模块和方法参数配置模块。
sdk包实现模块,用于实现一个用于查询用户信息的sdk包,并在sdk包中定义一个Web拦截器以便供调用方引用。
对象绑定模块,用于利用该Web拦截器调用获取用户信息的restApi,以便从用户系统中获取用户信息,并将用户系统返回的用户信息绑定到request对象中。
解析接口实现模块,用于实现参数解析器接口,并将Web拦截器中绑定的用户对象从request中取出并返回给调用方的Web方法参数。参数解析器接口可以为Spring 的HandlerMethodArgumentResolver接口。
解析接口实现模块中,将Web拦截器中绑定的用户对象从request中取出并返回给调用方的方法参数的操作为:获取request中绑定的用户信息,赋值给调用方的add方法中的CurrentSystemUser userWrapper参数。此时,方法参数配置模块中,在方法参数中直接将用户对象作为参数的操作为:在调用方的add方法参数中直接使用用户对象参数userWrapper。
方法参数配置模块,用于调用方引用sdk包,在Web方法参数中直接将用户对象作为参数,即可获取到用户信息。
应用案例
假设应用A要获取用户B的用户信息,操作流程如下:
首先,应用A在maven或gradle文件中引入获取用户信息的jar包(sdk包)。
其次,配置拦截路径,也就是配置应用A的哪些请求地址将被jar包中的拦截器拦截。更具体地,应用A的add方法中想要获取当前登录用户信息(如登录账号和手机号),在应用A的配置文件中配置拦截路径(访问此add方法的web路径),当请求访问此add方法时,先经过sdk包中的拦截器,获取用户信息绑定到request中,再经过参数解析器接口,获取request中绑定的用户信息,赋值给应用A 的add方法中的CurrentSystemUseruserWrapper参数。
最后,在应用A的add方法参数中直接使用用户对象参数userWrapper,即可获取到用户B的用户信息,如登录账号和手机号。
针对同一个应用,将本发明方法与传统方法对比,登录信息获取的效率可以提升50%。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (8)
1.一种基于方法参数获取当前登录用户信息的方法,其特征在于,包括以下步骤:
实现一个用于查询用户信息的sdk包,在sdk包中定义一个Web拦截器;
利用该Web拦截器调用获取用户信息的restApi,以便从用户系统中获取用户信息,并将用户系统返回的用户信息绑定到request对象中;
实现参数解析器接口,将Web拦截器中绑定的用户信息从request对象中取出并返回给调用方的方法参数;
调用方引用sdk包,并配置拦截路径,在方法参数中直接将用户对象作为参数,获取到用户信息。
2.根据权利要求1所述的基于方法参数获取当前登录用户信息的方法,其特征在于,所述参数解析器接口为Spring 的HandlerMethodArgumentResolver接口。
3.根据权利要求2所述的基于方法参数获取当前登录用户信息的方法,其特征在于,所述将Web拦截器中绑定的用户对象从request中取出并返回给调用方的方法参数的操作为:获取request中绑定的用户信息,赋值给调用方的add方法中的CurrentSystemUseruserWrapper参数;
所述在方法参数中直接将用户对象作为参数的操作为:在调用方的add方法参数中直接使用用户对象参数userWrapper。
4.根据权利要求1所述的基于方法参数获取当前登录用户信息的方法,其特征在于,所述调用方引用sdk包的操作为:调用方在maven或gradle文件中引入获取用户信息的jar包。
5.一种基于方法参数获取当前登录用户信息的系统,其特征在于,包括以下模块:
sdk包实现模块,用于实现一个用于查询用户信息的sdk包,并在sdk包中定义一个Web拦截器以便供调用方引用;
对象绑定模块,用于利用该Web拦截器调用获取用户信息的restApi,以便从用户系统中获取用户信息,并将用户系统返回的用户信息绑定到request对象中;
解析接口实现模块,用于实现参数解析器接口,并将Web拦截器中绑定的用户信息从request对象中取出并返回给调用方的方法参数;
方法参数配置模块,用于调用方引用sdk包,并配置拦截路径,在方法参数中直接将用户对象作为参数,获取到用户信息。
6.根据权利要求5所述的基于方法参数获取当前登录用户信息的系统,其特征在于,所述参数解析器接口为Spring 的HandlerMethodArgumentResolver接口。
7.根据权利要求6所述的基于方法参数获取当前登录用户信息的系统,其特征在于,所述解析接口实现模块中,将Web拦截器中绑定的用户对象从request中取出并返回给调用方的方法参数的操作为:获取request中绑定的用户信息,赋值给调用方的add方法中的CurrentSystemUser userWrapper参数;
所述方法参数配置模块中,在方法参数中直接将用户对象作为参数的操作为:在调用方的add方法参数中直接使用用户对象参数userWrapper。
8.根据权利要求5所述的基于方法参数获取当前登录用户信息的系统,其特征在于,所述方法参数配置模块中,调用方引用sdk包的操作为:调用方在maven或gradle文件中引入获取用户信息的jar包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210872063.0A CN115080278A (zh) | 2022-07-24 | 2022-07-24 | 基于方法参数获取当前登录用户信息的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210872063.0A CN115080278A (zh) | 2022-07-24 | 2022-07-24 | 基于方法参数获取当前登录用户信息的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115080278A true CN115080278A (zh) | 2022-09-20 |
Family
ID=83242956
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210872063.0A Pending CN115080278A (zh) | 2022-07-24 | 2022-07-24 | 基于方法参数获取当前登录用户信息的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115080278A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186551A (zh) * | 2011-12-28 | 2013-07-03 | 金蝶软件(中国)有限公司 | 基于web应用平台的异常分析方法及仿真系统 |
EP3241343A1 (en) * | 2016-03-17 | 2017-11-08 | Google, Inc. | Multi-provider data provision with request batching |
CN111339471A (zh) * | 2020-03-13 | 2020-06-26 | 苏宁金融科技(南京)有限公司 | 动态加载页面埋点数据的方法及装置 |
CN114153641A (zh) * | 2021-11-29 | 2022-03-08 | 南方电网深圳数字电网研究院有限公司 | 基于拦截器技术的审计日志动态实现方法及装置 |
-
2022
- 2022-07-24 CN CN202210872063.0A patent/CN115080278A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103186551A (zh) * | 2011-12-28 | 2013-07-03 | 金蝶软件(中国)有限公司 | 基于web应用平台的异常分析方法及仿真系统 |
EP3241343A1 (en) * | 2016-03-17 | 2017-11-08 | Google, Inc. | Multi-provider data provision with request batching |
CN111339471A (zh) * | 2020-03-13 | 2020-06-26 | 苏宁金融科技(南京)有限公司 | 动态加载页面埋点数据的方法及装置 |
CN114153641A (zh) * | 2021-11-29 | 2022-03-08 | 南方电网深圳数字电网研究院有限公司 | 基于拦截器技术的审计日志动态实现方法及装置 |
Non-Patent Citations (1)
Title |
---|
九卿996: ""封装注解,统一获取当前登录用户"", 《HTTPS://BLOG.CSDN.NET/WEIXIN_45689259/ARTICLE/DETAILS/121955658》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1181698C (zh) | 通信网络终端、终端所执行的方法及包括该终端的通信网络 | |
CN110351283B (zh) | 一种数据传输方法、装置、设备及存储介质 | |
US20120102195A1 (en) | System and method for providing information relating to an email being provided to an electronic device | |
KR20070118309A (ko) | 메시징 서비스 시스템을 경유해서 액세스 가능한서비스들을 위한 단축키 발생기 | |
US9294867B2 (en) | Provision of services over a common delivery platform such as a mobile telephony network | |
JP5744717B2 (ja) | ディレクトリへのアクセスのための方法及びデバイス | |
US20060161991A1 (en) | Provision of services over a common delivery platform such as a mobile telephony network | |
CN110519465A (zh) | 电话平台日志查询方法、终端设备、存储介质及装置 | |
CN102025567A (zh) | 一种共享接入检测方法以及相关装置 | |
US8365189B2 (en) | Method and apparatus for a service control layer | |
CN113010378B (zh) | 微服务模块的日志处理方法及装置、存储介质、电子装置 | |
GB2422221A (en) | Provision of services over a common delivery platform such as a mobile telephony network | |
CN111031148B (zh) | 一种地址解析方法、装置及电子设备和存储介质 | |
EP1377087B1 (en) | Using call establishment signaling to request data | |
CA2729314C (en) | A method of performing data mediation, and an associated computer program product, data mediation device and information system | |
CN112887441B (zh) | 一种域名解析方法、终端和dns服务器 | |
CN115080278A (zh) | 基于方法参数获取当前登录用户信息的方法及系统 | |
CN113051138A (zh) | 基于Dubbo服务接口的日志分析装置及方法 | |
CA2481099A1 (en) | Exchange infrastructure system and method | |
EP1681832A1 (en) | Provision of services over a common delivery platform such as a mobile telephony network | |
CN110022332B (zh) | 一种超文本传输安全协议代理方法、装置、设备及介质 | |
US9992638B1 (en) | System and method of facilitating management of common channel based services | |
CN113542409B (zh) | 一种RocketMQ消息队列实例管理系统及处理方法 | |
US20060190539A1 (en) | Provision of services over a common delivery platform such as a mobile telephony network | |
CN107846300B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220920 |
|
RJ01 | Rejection of invention patent application after publication |