libgit2sharp - 如何验证凭据提供程序
问题描述
给定用户和密码的组合,我想确定这会导致UsernamePasswordCredentials
对已知的远程 git 服务器有效。
理想情况下,无论是否发生本地结帐,我都希望能够做到这一点。
我试过的是这个。我有一个具有以下方法的类
private CredentialsHandler UserPassCredentialsProvider
{
get
{
if (_gitPass == null)
throw new System.Exception("No git Credentials have been supplied");
var credentials = new UsernamePasswordCredentials()
{
Username = _gitUser,
Password = _gitPass
};
return (_url, _usr, _cred) => credentials;
}
}
public bool CheckCredentials()
{
try
{
using (var repo = new Repository(Path.Combine(WorkingCopyRoot, "MyRepo")))
{
IEnumerable<Reference> refs = Repository.ListRemoteReferences(Path.Combine(WorkingCopyRoot, "MyRepo"), UserPassCredentialsProvider);
return refs != null;
}
}
catch(Exception ex)
{
return false;
}
}
这只是我在撰写本文时所拥有的代码——我已经对此进行了一段时间的修改,但是,ListRemoteReferences()
无论是否使用有效密码,它似乎都可以正常工作。
实现我想要的东西似乎并不简单 - 任何人有什么建议吗?
解决方案
我非常接近。通过将路径从本地切换到远程,我能够让它按我的意愿工作。在下面的代码中RepoRoot
是一个 URL。
public bool CheckCredentials()
{
try
{
IEnumerable<Reference> refs = Repository.ListRemoteReferences(Path.Combine(RepoRoot, "MyRepo"), UserPassCredentialsProvider);
return refs != null;
}
catch (Exception ex)
{
return false;
}
}
推荐阅读
- html - 没有 td 时在表格行中显示边框
- javascript - Node.js / Javascript 多重递归承诺在视图中返回
- r - 找不到对象“wcol”:r 中的 mlr 包中的 h2o.gbm 错误
- javascript - 如何从日期范围(开始日期和结束日期)生成每周列表?
- excel - 如何根据其他两个单元格的内容引用公式中的特定单元格
- zsh - 在括号内添加文本会删除右括号后的所有内容
- javascript - 箭头函数和原型继承范围问题
- html - 使用 @page 在 html/css 中创建标题
- windows - 如何格式化 Powershell 脚本的输出
- spring-webflux - 如何从通量可迭代中获取不同的元素