当前位置: 欣欣网 > 码农

.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技能

点赞和在看就是最大的支持❤️