文章目录
一、前言
在文章 【Abp VNext】实战入门(十二):【1】角色权限管理 —— 后端对应的框架结构表 中讲解了用户、角色、权限、功能之间的关系以及对应的后端数据库表架构 ; 还有AbpVnext Web项目中 自带的集成好的用户角色管理;
本章主要讲解如何简单快捷的使用AbpVnext自带功能接口来修改用户基础信息、角色信息、账号密码信息等…
二、自带的用户管理接口
1. 通过Swagger查看自带的用户操作接口;
2. 重点讲解用户更新接口:/api/identity/users/{id}
接口参数:
{
"password": "Admin123456*", //密码
//时间戳 必须是上一次从数据库中提取的时间戳 每次调用更新接口 都会自动更新一次这个字段 否则出错
"concurrencyStamp": "92c1b8fa33b34222993d233f4c8ede83",
"userName": "hanlinsha2222",//账号
"name": "string",//姓名
"surname": "string",
"email": "user@example.com",
"phoneNumber": "string",
"lockoutEnabled": true,
"roleNames": [ //用户归属的角色列表 可以没有可以是多个
"admin",
"operator"
]
}
3. 特别注意事项 : concurrencyStamp 时间戳字段赋值
-
concurrencyStamp 时间戳 来自于数据库,(也就是说要先查询用于信息,拿到时间戳 通过时间戳来更新用户信息);
-
调用更新接口后 concurrencyStamp 时间戳会自动刷新入库
-
更新接口提供的concurrencyStamp 时间戳 如果和数据库中的时间戳不一致 会提示 “对象已被修改,乐观并发失败”
{
"error": {
"code": "Volo.Abp.Identity:ConcurrencyFailure",
"message": "对象已被修改,乐观并发失败.",
"details": null,
"data": {},
"validationErrors": null
}
}
4. 接口测试截图预览
三、总结
搞程序就是填不完的坑,理论上是很简单的一个接口调用,由于搞不清缘由,很容易被这个时间戳字段坑,导致接口怎么调都不行,看见问题了却又不知道什么意思 到底怎么解决,希望本文对大家有所帮助;