概括
- 本文的操作需要正确部署U8HttpApi ,绑定IIS端口
- 配置webapi接口
- 获取erp账套信息
- 获取token访问令牌
- 传入JSON的参数如何设置
接口配置
1.redis
- 接口依赖redis作为缓存,此处配置redis的地址。若在Windows安装了redis,默认位置C:\Program Files\Redis,文件redis.windows-service.conf配置requirepass
2.数据库
- 若使用本地默认sqlserver,默认就是127.0.0.1,1433,1433就是默认端口
- 若使用数据库服务器,此时ip和端口就是数据库服务器信息
3.ERP的IP
- 若本套接口部署在ERP应用服务器的iis,此时ip就是127.0.0.1
- 若本套接口部署在ERP客户端电脑iis,此时ip就是不是127.0.0.1,而是ERP应用服务器IP
4.数据库账号和密码
- 此配置就是上面第二点配置的数据库账号信息,可以为只读账号。
- 默认数据库账号需要有查询权限,应用在查询类接口,而不需要构建erp登录。
5.redis缓存过期时间
- 设置token令牌redis缓存过期时间,需要为整数表示小时。
- 若值为0表示所有token缓存不会自动删除
- 若值为0表示所有token缓存将持久化存储(V20240818更新)
- 若token过期时间在20分钟内,再次请求有鉴权的接口,token将自动刷新缓存时间(V20240818更新)
- 建议一:若你的客户端将本套接口作为直接后端服务,可以设置为2/4,token会自动刷新,相当于20分钟客户端没请求接口需要重新获取访问令牌,此时跳转客户端登录界面。
- 建议二:若想简单粗暴些,不想频繁获取token,或者本套接口对外开放授权外部系统调用,那么此值可以配置为0。此值为0表明若用户密码不改,则token不会过期
6.ERP数据源
7.接口管理员
- V20240818版本更新
- 部分接口只能此用户访问
8.ERP服务地址
- 部分服务直接调用ERP的webservice服务
Token
- 访问有鉴权的接口,必须先获取token令牌
ERP登录方式
- 首先了解erp登录界面,需要上述截图的五个信息。这些信息在接口中会作为参数请求erp登录模块,校验用户账号&密码,验证通过则存储输入参数到redis中,返回一个uuid字符串作为token。
- ERP服务器信息,在上面接口配置中已经设置好
获取ERP账套信息
方式一
查看数据库,UFDATA开头的就是账套数据库
方式二
- 接口部署完后调用接口/api/System/GetU8Account,将调用默认数据库配置抓取ERP账套数据库信息返回
此接口返回所有erp账套数据库信息
获取访问令牌
- 接口URL:/api/System/GetToken,为POST请求,完整http地址为http://服务器IP:端口/api/System/GetToken
- 接口参数:
U8DbName(erp账套数据库,必填)
LoginDateTime(登录时间,V20240818版本改为非必填,默认请求服务器当时日期)
sUserId(用户名,必填)
sPassword(密码,必填)
bPersist(是否持久化token,V20240818版本新增,非必填,若true则token不会过期。)
{
"U8DbName": "UFDATA_999_2014",
"LoginDateTime": "2024-08-10 20:00:00",
"sUserId": "001",
"sPassword": "123",
"bPersist":true
}
- 接口调用:输入正确的用户信息,将返回Token访问令牌
访问有鉴权接口
- 需要将token放入http请求头中,否则返回401
获取用户持久化token
- V20240818功能新增
- 接口url:/api/UserAccess/LoadUserPersistToken?userId=xxx,仅为接口管理员可访问
- 获取用户持久化token列表,userId(ERP账号)为空则返回所有数据
访问权限控制
- V20240818功能新增
- 此功能在于控制用户的接口权限,仅为辅助控制,最终还得根据ERP权限为准,举例:设置某用户有新增某个单据权限,不代表ERP中此用户有权限新增!!
- 在接口对外开放第三方系统时,建议设置!
设置访问权限
{
"userId": "001", //ERP用户账号
"controller": "/api/OtherIn", //接口路由
"actions": "Add" //接口动作,应为逗号间隔
}
- 接口url:/api/UserAccess/Set,仅为接口管理员可访问
- actions参数:* 为允许访问全部控制器(单据)方法,空值则不允许访问控制器(单据)所有方法
获取访问权限
- 接口url:/api/UserAccess/Load?userId=xxx,仅为接口管理员可访问
- 返回
{
"code": 0,
"msg": "OK",
"data": [
{
"user_id": "002",
"controller": "/api/System",
"actions": "SqlQuery,SqlQuery2,SqlQuery3"
},
{
"user_id": "002",
"controller": "/api/System2",
"actions": "SqlQuery,SqlQuery2,SqlQuery3"
}
]
}
清空访问权限
- 接口url:/api/UserAccess/Clear?userId=xxx, 仅为接口管理员可访问
- 清空访问权限限制,也就是说调用成功后,此用户不受访问控制!
总结和建议
- 本次介绍了获取token方式,当本套接口对外开放其他时,可以在请求token时加入持久化参数,将返回token给外部系统即可,然后通过权限控制来限制此token用户可访问的接口!