當前位置: 妍妍網 > 碼農

.NET 最好用的 OAuth 登入框架

2024-03-11碼農

MrHuo.OAuth

推薦一個開源的三方登入開源元件,MrHuo.OAuth,整合了國內外大部份平台,支持二十多個三方登入,包含了微信、支付寶、Github、釘釘、微博等等,使用非常方便。

如何使用?

在計畫中整合 MrHuo.OAuth 也非常方便,只需要安裝對應的三方登入的元件庫就可以了。
使用 Nuget 或命令安裝

Install-Package MrHuo.OAuth.Wechat -Version 1.1.1

然後修改計畫的 Startup.cs 檔,進行註入服務

publicvoidConfigureServices(IServiceCollection services)
{
//將第三方登入元件註入進去
services.AddSingleton(new Baidu.BaiduOAuth(OAuthConfig.LoadFrom(Configuration, "oauth:baidu")));
services.AddSingleton(new Wechat.WechatOAuth(OAuthConfig.LoadFrom(Configuration, "oauth:wechat")));
services.AddSingleton(new Gitlab.GitlabOAuth(OAuthConfig.LoadFrom(Configuration, "oauth:gitlab")));
services.AddSingleton(new Gitee.GiteeOAuth(OAuthConfig.LoadFrom(Configuration, "oauth:gitee")));
//... 其他登入方式
}

接下來,在 Controller 中整合三方登入,下面是一個範例

public classOAuthController : Controller
{
[HttpGet("oauth/{type}")]
public IActionResult Index(
string type,
[FromServices] BaiduOAuth baiduOAuth,
[FromServices] WechatOAuth wechatOAuth
)

{
var redirectUrl = "";
switch (type.ToLower())
{
case"baidu":
{
redirectUrl = baiduOAuth.GetAuthorizeUrl();
break;
}
case"wechat":
{
redirectUrl = wechatOAuth.GetAuthorizeUrl();
break;
}
default:
return ReturnToError($"沒有實作【{type}】登入方式!");
}
return Redirect(redirectUrl);
}
[HttpGet("oauth/{type}callback")]
publicasync Task<IActionResult> LoginCallback(
string type,
[FromServices] BaiduOAuth baiduOAuth,
[FromServices] WechatOAuth wechatOAuth,
[FromQuery] string code,
[FromQuery] string state
)

{
try
{
switch (type.ToLower())
{
case"baidu":
{
var authorizeResult = await baiduOAuth.AuthorizeCallback(code, state);
if (!authorizeResult.IsSccess)
{
thrownew Exception(authorizeResult.ErrorMessage);
}
return Json(authorizeResult);
}
case"wechat":
{
var authorizeResult = await wechatOAuth.AuthorizeCallback(code, state);
if (!authorizeResult.IsSccess)
{
thrownew Exception(authorizeResult.ErrorMessage);
}
return Json(authorizeResult);
}
default:
thrownew Exception($"沒有實作【{type}】登入回呼!");
}
}
catch (Exception ex)
{
return Content(ex.Message);
}
}
}

最後,就是在前端頁面上添加三方登入的按鈕或圖示,來支持三方登入,就像這樣

<!--在程式碼中放置授權按鈕-->
<ahref="/oauth/baidu">Baidu 登入</a>
<ahref="/oauth/wechat">Wechat 掃碼登入</a>
<!-- //其他登入方式照樣子往下寫 -->

總結一下,MrHuo.OAuth 提供了非常全面的三方登入,整合到計畫中也很簡單,當然也可以根據需要自行擴充套件。

計畫地址

https://github.com/mrhuo/MrHuo.OAuth

- EOF -

推薦閱讀 點選標題可跳轉

看完本文有收獲?請轉發分享給更多人

推薦關註「DotNet」,提升.Net技能

點贊和在看就是最大的支持❤️