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 积分,解读结果公开显示在下面。

还没有人解读过这个文件。