commit
96952ca152
|
@ -3,6 +3,7 @@ using Bootstrap.DataAccess;
|
||||||
using Longbow.GiteeAuth;
|
using Longbow.GiteeAuth;
|
||||||
using Longbow.GitHubAuth;
|
using Longbow.GitHubAuth;
|
||||||
using Longbow.Web;
|
using Longbow.Web;
|
||||||
|
using Longbow.WeChatAuth;
|
||||||
using Microsoft.AspNetCore.Authentication;
|
using Microsoft.AspNetCore.Authentication;
|
||||||
using Microsoft.AspNetCore.Authentication.Cookies;
|
using Microsoft.AspNetCore.Authentication.Cookies;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
|
@ -199,5 +200,16 @@ namespace Bootstrap.Admin.Controllers
|
||||||
var enabled = config.GetValue($"{nameof(GitHubOptions)}:Enabled", false);
|
var enabled = config.GetValue($"{nameof(GitHubOptions)}:Enabled", false);
|
||||||
return Challenge(enabled ? GitHubDefaults.AuthenticationScheme : CookieAuthenticationDefaults.AuthenticationScheme);
|
return Challenge(enabled ? GitHubDefaults.AuthenticationScheme : CookieAuthenticationDefaults.AuthenticationScheme);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// WeChat 认证
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult WeChat([FromServices]IConfiguration config)
|
||||||
|
{
|
||||||
|
var enabled = config.GetValue($"{nameof(GitHubOptions)}:Enabled", false);
|
||||||
|
return Challenge(enabled ? WeChatDefaults.AuthenticationScheme : CookieAuthenticationDefaults.AuthenticationScheme);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,8 +66,13 @@
|
||||||
"ClientSecret": "3427f2d901ba9afc76c1842a7303b2d67f8e098e71acc15051f89fe6f3d265db",
|
"ClientSecret": "3427f2d901ba9afc76c1842a7303b2d67f8e098e71acc15051f89fe6f3d265db",
|
||||||
"CallbackPath": "/signin-gitee",
|
"CallbackPath": "/signin-gitee",
|
||||||
"HomePath": "/Admin/Profiles",
|
"HomePath": "/Admin/Profiles",
|
||||||
"Scope": [ "user_info", "projects" ],
|
"Scope": [
|
||||||
"Roles": [ "Administrators" ],
|
"user_info",
|
||||||
|
"projects"
|
||||||
|
],
|
||||||
|
"Roles": [
|
||||||
|
"Administrators"
|
||||||
|
],
|
||||||
"App": "0",
|
"App": "0",
|
||||||
"StarredUrl": "https://gitee.com/api/v5/user/starred/LongbowEnterprise/BootstrapAdmin"
|
"StarredUrl": "https://gitee.com/api/v5/user/starred/LongbowEnterprise/BootstrapAdmin"
|
||||||
},
|
},
|
||||||
|
@ -77,19 +82,49 @@
|
||||||
"ClientSecret": "ffa759ca599df941b869efecb5e750bc1b27334e",
|
"ClientSecret": "ffa759ca599df941b869efecb5e750bc1b27334e",
|
||||||
"CallbackPath": "/signin-github",
|
"CallbackPath": "/signin-github",
|
||||||
"HomePath": "/Admin/Profiles",
|
"HomePath": "/Admin/Profiles",
|
||||||
"Scope": [ "user_info", "repo" ],
|
"Scope": [
|
||||||
"Roles": [ "Administrators" ],
|
"user_info",
|
||||||
|
"repo"
|
||||||
|
],
|
||||||
|
"Roles": [
|
||||||
|
"Administrators"
|
||||||
|
],
|
||||||
"App": "0",
|
"App": "0",
|
||||||
"StarredUrl": "https://api.github.com/user/starred/ArgoZhang/BootstrapAdmin"
|
"StarredUrl": "https://api.github.com/user/starred/ArgoZhang/BootstrapAdmin"
|
||||||
},
|
},
|
||||||
|
"WeChatOptions": {
|
||||||
|
"Enabled": true,
|
||||||
|
"ClientId": "<AppId>",
|
||||||
|
"ClientSecret": "<secret>",
|
||||||
|
"CallbackPath": "/signin-weixin",
|
||||||
|
"HomePath": "/Admin/Profiles",
|
||||||
|
"Scope": [
|
||||||
|
"snsapi_login"
|
||||||
|
],
|
||||||
|
"Roles": [
|
||||||
|
"Administrators"
|
||||||
|
],
|
||||||
|
"App": "0"
|
||||||
|
},
|
||||||
"SMSOptions": {
|
"SMSOptions": {
|
||||||
"CompanyCode": "<CompanyCode>",
|
"CompanyCode": "<CompanyCode>",
|
||||||
"MD5Key": "MD5Key",
|
"MD5Key": "MD5Key",
|
||||||
"Roles": [ "Administrators" ],
|
"Roles": [
|
||||||
|
"Administrators"
|
||||||
|
],
|
||||||
"HomePath": "/Admin/Profiles",
|
"HomePath": "/Admin/Profiles",
|
||||||
"App": "0"
|
"App": "0"
|
||||||
},
|
},
|
||||||
"AppMenus": [ "首页", "测试页面", "关于", "返回码云", "多级菜单", "第二层", "第三层", "第四层" ],
|
"AppMenus": [
|
||||||
|
"首页",
|
||||||
|
"测试页面",
|
||||||
|
"关于",
|
||||||
|
"返回码云",
|
||||||
|
"多级菜单",
|
||||||
|
"第二层",
|
||||||
|
"第三层",
|
||||||
|
"第四层"
|
||||||
|
],
|
||||||
"LongbowCache": {
|
"LongbowCache": {
|
||||||
"Enabled": true,
|
"Enabled": true,
|
||||||
"CorsItems": [
|
"CorsItems": [
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
<PackageReference Include="Longbow.Security.Cryptography" Version="1.3.0" />
|
<PackageReference Include="Longbow.Security.Cryptography" Version="1.3.0" />
|
||||||
<PackageReference Include="Longbow.Tasks" Version="2.2.23" />
|
<PackageReference Include="Longbow.Tasks" Version="2.2.23" />
|
||||||
<PackageReference Include="Longbow.Web" Version="2.2.16" />
|
<PackageReference Include="Longbow.Web" Version="2.2.16" />
|
||||||
|
<PackageReference Include="Longbow.WeChatAuth" Version="2.2.0" />
|
||||||
<PackageReference Include="Microsoft.Data.Sqlite" Version="2.2.6" />
|
<PackageReference Include="Microsoft.Data.Sqlite" Version="2.2.6" />
|
||||||
<PackageReference Include="PetaPoco.Extensions" Version="1.0.9" />
|
<PackageReference Include="PetaPoco.Extensions" Version="1.0.9" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
using Longbow.OAuth;
|
||||||
|
using Longbow.Security.Cryptography;
|
||||||
|
using Longbow.WeChatAuth;
|
||||||
|
using Microsoft.AspNetCore.Authentication.OAuth;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Bootstrap.DataAccess
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 微信登陆帮助类
|
||||||
|
/// </summary>
|
||||||
|
public static class WeChatHelper
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 微信登陆配置方法
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TOptions"></typeparam>
|
||||||
|
/// <param name="option"></param>
|
||||||
|
public static void Configure<TOptions>(TOptions option) where TOptions : LgbOAuthOptions
|
||||||
|
{
|
||||||
|
option.Events.OnCreatingTicket = context =>
|
||||||
|
{
|
||||||
|
// 生成用户
|
||||||
|
var user = ParseUser(context);
|
||||||
|
user.App = option.App;
|
||||||
|
OAuthHelper.SaveUser(user, option.Roles);
|
||||||
|
|
||||||
|
// 记录登陆日志
|
||||||
|
context.HttpContext.Log(user.DisplayName, true);
|
||||||
|
return System.Threading.Tasks.Task.CompletedTask;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 插入 Gitee 授权用户到数据库中
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="userName"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private static User ParseUser(OAuthCreatingTicketContext context)
|
||||||
|
{
|
||||||
|
var user = context.User.ToObject<WeChatUser>();
|
||||||
|
return new User()
|
||||||
|
{
|
||||||
|
ApprovedBy = "OAuth",
|
||||||
|
ApprovedTime = DateTime.Now,
|
||||||
|
DisplayName = user.NickName,
|
||||||
|
UserName = user.UnionId,
|
||||||
|
Password = LgbCryptography.GenerateSalt(),
|
||||||
|
Icon = user.HeadImgUrl,
|
||||||
|
Description = $"{context.Scheme.Name}"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue