注:该项目用于交流学习,不能用于其他正式生产用途
最近用Actix-web参考官方给出的示例,实现了登录的功能
项目地址: https://gitee.com/ZisFinal/rust-auth-login/tree/master/
一、环境准备
-
rust版本 1.65.0
rustc --version # rustc 1.65.0 (897e37553 2022-11-02)
-
mysql 5.7.0
-
系统包依赖
[dependencies]
actix-identity = "0.5"
actix-cors = "0.6.0-beta.4"
actix-rt = "2.6.0"
actix-web = "4.0.0-rc.2"
actix-session = { version = "0.7", features = ["cookie-session"] }
aes = "0.7.5"
base64 = "0.13.0"
block-modes = "0.8.1"
bytebuffer = "0.2.1"
chrono = { version = "0.4", features = ["serde"] }
dotenv = "0.15.0"
fast_log = "1.5"
hex-literal = "0.2.1"
log = "0.4"
rand = "0.8.5"
rbs = { version = "0.1"}
rbatis = { version = "4.0"}
rbdc-mysql = { version = "0.1.16" }
snowflake-multi-threaded = "0.1.4"
serde = { version = "1.0.132", features = ["derive"]}
serde_json = "1"
tokio = { version = "1", features = ["full"] }
二、项目结构
目前一期项目结构
三、api接口文档
注册接口
请求方式: POST
请求类型: JSON
请求URL: http:// localhost:8080/register
-
请求示例:
失败
curl -i --request POST --url http://localhost:8080/register --header 'content-type: application/json' --data '{"username": "admin","password":"admin", "email": "admin@email.com"}'
-
HTTP/1.1 500 Internal Server Errorcontent-length: 50content-type: application/jsonaccess-control-allow-credentials: truevary: Origin, Access-Control-Request-Method, Access-Control-Request-Headersdate: Wed, 16 Nov 2022 16:09:01 GMT{"code":-1,"message":"Database error","data":null}
成功
curl -i --request POST --url http://localhost:8080/register --header 'content-type: application/json' --data '{"username": "admin","password":"admin", "email": "admin@email.com"}'
-
HTTP/1.1 200 OKcontent-length: 61access-control-allow-credentials: truevary: Origin, Access-Control-Request-Method, Access-Control-Request-Headerscontent-type: application/jsondate: Wed, 16 Nov 2022 16:09:45 GMT{"code":0,"msg":"success","data":{"id":"645415247410237440"}}
登录接口
请求方式: POST
请求类型: JSON
请求URL: http://localhost:8080/auth
-
请求示例
失败
curl -i --request POST --url http://localhost:8080/auth --header 'content-type: application/json' --data '{"username": "admin","password":"123"}'
-
HTTP/1.1 403 Forbiddencontent-length: 60access-control-allow-credentials: truevary: Origin, Access-Control-Request-Method, Access-Control-Request-Headerscontent-type: application/jsondate: Wed, 16 Nov 2022 16:15:58 GMT
-
{"code":-1,"msg":"username or password invalid","data":null}
成功
curl -i --request POST --url http://localhost:8080/auth --header 'content-type: application/json' --data '{"username": "admin","password":"admin"}'
-
HTTP/1.1 200 OKcontent-length: 38content-type: application/jsonset-cookie: Cookies=HW4CJ3rrJ+NiiyeM21AjMyccWLzw5ndsf8YgSoUeyiKUeQq86asAQ00KqZwUBSqTLNWoGLPGTST+TtHcZxndP6MbYfq80GYIRKOYa4TZPGQk7GXqYTjtjtxA3E9M; HttpOnly; SameSite=Lax; Path=/; Domain=localhost; Max-Age=7200vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headersaccess-control-allow-credentials: truedate: Wed, 16 Nov 2022 16:15:03 GMT
-
{"code":0,"msg":"success","data":null}
验证用户信息接口
-
请求方式: GET
-
请求URL: http://localhost:8080/auth
-
请求示例:
失败
curl -i --request GET --url http://localhost:8080/auth --cookie Cookies=HW4CJ3rrJ+NiiyeM21AjMyccWLzw5ndsf8YgSoUeyiKUeQq86asAQ00KqZwUBSqTLNWoGLPGTST+TtHcZxndP6MbYfq80GYIRKOYa4TZPGQk7GXqYTjtjtxA3E9
-
HTTP/1.1 401 Unauthorizedcontent-length: 54access-control-allow-credentials: truecontent-type: application/jsonvary: Origin, Access-Control-Request-Method, Access-Control-Request-Headersdate: Wed, 16 Nov 2022 16:26:43 GMT
-
{"code":-1,"message":"Unauthorized error","data":null}%
成功
curl -i --request GET --url http://localhost:8080/auth --cookie Cookies=HW4CJ3rrJ+NiiyeM21AjMyccWLzw5ndsf8YgSoUeyiKUeQq86asAQ00KqZwUBSqTLNWoGLPGTST+TtHcZxndP6MbYfq80GYIRKOYa4TZPGQk7GXqYTjtjtxA3E9M
-
HTTP/1.1 200 OKcontent-length: 20vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headerscontent-type: application/jsonaccess-control-allow-credentials: truedate: Wed, 16 Nov 2022 16:27:09 GMT
-
{"username":"admin"}%
注销接口
-
请求方式: DELETE
-
请求URL: http://localhost:8080/auth
-
请求示例:
失败
-
curl -i --request DELETE --url http://localhost:8080/authHTTP/1.1 401 Unauthorizedcontent-length: 0access-control-allow-credentials: truevary: Origin, Access-Control-Request-Method, Access-Control-Request-Headersdate: Wed, 16 Nov 2022 16:29:39 GM
成功
-
curl -i --request DELETE --url http://localhost:8080/authHTTP/1.1 200 OKcontent-length: 20vary: Origin, Access-Control-Request-Method, Access-Control-Request-Headerscontent-type: application/jsonaccess-control-allow-credentials: truedate: Wed, 16 Nov 2022 16:27:09 GMT
-
{"code":0,"message":"success","data":null}%
文章会在微信公众号同步更新O(∩_∩)O哈哈~