基于Actix-Web 和Rbatis 的用户注册和登录实现(一)

注:该项目用于交流学习,不能用于其他正式生产用途

最近用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哈哈~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值