14 个版本 (4 个破坏性版本)

0.5.4 2024年3月15日
0.5.3 2023年10月8日
0.5.2 2023年9月9日
0.4.1 2023年9月6日
0.1.1 2023年8月7日

#37认证

Download history · Rust 包仓库 6862/week @ 2024-04-08 · Rust 包仓库 7963/week @ 2024-04-15 · Rust 包仓库 7772/week @ 2024-04-22 · Rust 包仓库 7265/week @ 2024-04-29 · Rust 包仓库 6878/week @ 2024-05-06 · Rust 包仓库 6009/week @ 2024-05-13 · Rust 包仓库 6291/week @ 2024-05-20 · Rust 包仓库 6532/week @ 2024-05-27 · Rust 包仓库 5446/week @ 2024-06-03 · Rust 包仓库 6372/week @ 2024-06-10 · Rust 包仓库 7849/week @ 2024-06-17 · Rust 包仓库 5929/week @ 2024-06-24 · Rust 包仓库 5539/week @ 2024-07-01 · Rust 包仓库 5630/week @ 2024-07-08 · Rust 包仓库 6052/week @ 2024-07-15 · Rust 包仓库 6229/week @ 2024-07-22 · Rust 包仓库

每月下载量:23,947
用于 16 个 Crates (7 个直接使用)

BSD-2-Clause

51KB
773

auth-git2

git2 提供简单的认证。

使用 git2 进行认证可能相当困难。这个 crate 的目标是使其变得简单。

特性

  • 具有小的依赖关系树。
  • 可以查询 SSH agent 进行私钥认证。
  • 可以从文件中获取 SSH 密钥。
  • 可以提示用户为加密的 SSH 密钥输入密码。
    • 仅支持 OpenSSH 私钥。
  • 可以查询 git 凭据帮助程序以获取用户名和密码。
  • 可以使用预先提供的明文用户名和密码。
  • 可以作为最后手段提示用户输入凭据。
  • 允许您完全自定义所有用户提示。

默认用户提示将

  • 如果已配置,则使用 git askpass 辅助程序。
  • 如果没有配置 askpass 程序,则回退到终端上提示用户。
  • 如果没有可用于此过程的终端,则跳过提示。

创建认证器和启用认证机制

您可以使用 GitAuthenticator::new() (或 default()) 创建一个可用的认证器。使用这些构造函数之一将启用所有支持的认证机制。您还可以添加更多来自非默认位置的私钥文件以尝试。

您还可以使用 GitAuthenticator::new_empty() 创建一个没有任何认证机制启用的认证器。然后您可以有选择地启用认证机制并添加自定义私钥文件。

使用认证器

为了获得最大的灵活性,您可以使用 git2::Credentials 回调函数,通过调用 GitAuthenticator::credentials() 方法。您可以使用它来执行任何需要身份验证的git操作。这样做可以完全控制设置其他选项和git操作的回调。

如果您不需要设置其他选项或回调,也可以使用 GitAuthenticator 上的便利函数。它们将git操作与设置好凭证回调的封装。

自定义用户提示

所有用户提示都可以通过调用 GitAuthenticator::set_prompter() 方法进行完全自定义。这允许您覆盖用户输入凭证或密码提示的方式。

如果您有一个花哨的用户界面,可以使用自定义提示器将提示与您的用户界面集成。

示例:克隆仓库

use auth_git2::GitAuthenticator;
use std::path::Path;

let url = "https://github.com/de-vri-es/auth-git2-rs";
let into = Path::new("/tmp/dyfhxoaj/auth-git2-rs");

let auth = GitAuthenticator::default();
let mut repo = auth.clone_repo(url, into);

示例:使用完全控制fetch选项克隆仓库

use auth_git2::GitAuthenticator;
use std::path::Path;

let auth = GitAuthenticator::default();
let git_config = git2::Config::open_default()?;
let mut repo_builder = git2::build::RepoBuilder::new();
let mut fetch_options = git2::FetchOptions::new();
let mut remote_callbacks = git2::RemoteCallbacks::new();

remote_callbacks.credentials(auth.credentials(&git_config));
fetch_options.remote_callbacks(remote_callbacks);
repo_builder.fetch_options(fetch_options);

let url = "https://github.com/de-vri-es/auth-git2-rs";
let into = Path::new("/tmp/dyfhxoaj/auth-git2-rs");
let mut repo = repo_builder.clone(url, into);

依赖关系

~8–19MB
~298K SLoC