Modules/Framework/Gardener.Authentication/AuthenticationExtensions.cs
(开头部分) 4KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
// -----------------------------------------------------------------------------
// 园丁,是个很简单的管理系统
// gitee:https://gitee.com/hgflydream/Gardener
// issues:https://gitee.com/hgflydream/Gardener/issues
// -----------------------------------------------------------------------------
using Gardener.Authentication.Core;
using Gardener.Authentication.Enums;
using Gardener.Authentication.Options;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Authorization;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
using System;
using System.Text;
using System.Threading.Tasks;
namespace Microsoft.Extensions.DependencyInjection
{
/// <summary>
/// 安全服务
/// </summary>
public static class AuthenticationExtensions
{
/// <summary>
/// 添加安全服务
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
public static IServiceCollection AddAuthen(this IServiceCollection services)
{
//配置
services.AddConfigurableOptions<JWTOptions>();
//工具
services.TryAddSingleton<IJwtService, JwtBearerService>();
services.TryAddSingleton<IIdentityConverter, IdentityConverter>();
//当前请求身份
services.TryAddScoped<IIdentityService, IdentityService>();
//mvc配置
services.Configure<MvcOptions>(options =>
{
AuthorizationPolicy policy= new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.AddAuthenticationSchemes(IdentityType.User.ToString(), IdentityType.Client.ToString())
.Build();
//身份认证
options.Filters.Add(new AuthorizeFilter(policy));
});
using var serviceProvider = services.BuildServiceProvider();
var jwtSettings = serviceProvider.GetRequiredService<IOptions<JWTOptions>>().Value;
Func<MessageReceivedContext, Task> contextHandle = context =>
{
var accessToken = context.Request.Query["access_token"];
if (!string.IsNullOrEmpty(accessToken))
{
后面还有 63 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
