#firebase #rocket #jwt #service-account #firebase-auth

rocket_firebase_auth

轻松在Rocket应用程序中编码/解码Firebase令牌

12个不稳定版本 (4个破坏性更新)

0.5.0 2024年3月11日
0.4.0 2023年8月19日
0.3.3 2023年3月26日
0.3.1 2023年1月24日
0.1.1 2022年10月29日

#142 in 身份验证

Download history 169/week @ 2024-03-10 20/week @ 2024-03-17 5/week @ 2024-03-24 23/week @ 2024-03-31 48/week @ 2024-04-28 1/week @ 2024-05-05

每月下载量 417

MIT许可证

34KB
507

rocket-firebase-auth

status crate codecov

Firebase Auth with Rocket,含电池组

  • 小巧rocket-firebase-auth非常小巧,具有让您进一步减小其大小的功能
  • 专注做好一件事: 在Rocket应用程序中编码/解码Firebase JWT令牌,仅此而已

入门

1. 将Firebase服务账户密钥设置为环境变量

如果您还没有,为要创建的Rocket后端在Firebase中创建一个服务账户。生成一个新的私钥,并将生成的json复制粘贴到firebase-credentials.json文件中。它看起来应该像下面的json片段。

{
  "type": "*********",
  "project_id": "***********",
  "private_key_id": "*************",
  "private_key": "*****************",
  "client_email": "*********",
  "client_id": "*******",
  "auth_uri": "********",
  "token_uri": "********",
  "auth_provider_x509_cert_url": "********",
  "client_x509_cert_url": "********"
}

别忘了将firebase-credentials.json文件添加到您的.gitignore中。

# Firebase service account's secret credentials
firebase-credentials.json

2. 设置FirebaseAuth并开始使用

rocket-firebase-auth添加到您的项目中。

rocket_firebase_auth = "0.5"

现在,您可以通过使用默认导入中的辅助函数读取json文件来创建一个FirebaseAuth结构。

use rocket::{get, http::Status, routes, Build, Rocket};
use rocket_firebase_auth::{FirebaseAuth, FirebaseToken};

// Setup the server state, which will include your FirebaseAuth instance, among
// other things like the connection pool to your database.
struct ServerState {
    auth: FirebaseAuth,
}

#[get("/")]
async fn hello_world(token: FirebaseToken) -> Status {
    println!("Authentication succeeded with uid={}", token.sub);
    Status::Ok
}

#[rocket::launch]
async fn rocket() -> Rocket<Build> {
    let firebase_auth = FirebaseAuth::builder()
        .json_file("firebase-credentials.json")
        .build()
        .unwrap();

    rocket::build()
        .mount("/", routes![hello_world])
        .manage(ServerState {
            auth: firebase_auth,
        })
}

示例项目

有关带有前端示例的更详细示例,请参阅示例项目

测试

要运行测试,请运行以下命令

cargo test -- --test-threads=1

贡献

欢迎任何贡献(PR,问题)!

问题

如果您有任何问题,无论看起来多么微不足道,请通过问题让我知道。我会回答的!

许可证

MIT

依赖项

~17–53MB
~1M SLoC