modules/00_Admin/Admin.Core/Infrastructure/LoginHandler/UserNameLoginHandler.cs

(开头部分) 5KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;
using Mkh.Auth.Abstractions;
using Mkh.Auth.Abstractions.LoginHandlers;
using Mkh.Auth.Abstractions.Options;
using Mkh.Logging.Abstractions.Providers;
using Mkh.Mod.Admin.Core.Application.Account;
using Mkh.Mod.Admin.Core.Domain.Account;
using Mkh.Utils.Annotations;

namespace Mkh.Mod.Admin.Core.Infrastructure.LoginHandler;

/// <summary>
/// 用户名登录处理器
/// </summary>
[ScopedInject]
internal class UserNameLoginHandler : IUsernameLoginHandler
{
    private readonly IOptionsMonitor<AuthOptions> _authOptions;
    private readonly IVerifyCodeProvider _verifyCodeProvider;
    private readonly IAccountRepository _accountRepository;
    private readonly IPasswordHandler _passwordHandler;
    private readonly ILoginLogHandler _loginLogProvider;
    private readonly IAccountService _accountService;
    private readonly ITenantResolver _tenantResolver;
    private readonly AdminLocalizer _localizer;

    public UserNameLoginHandler(IOptionsMonitor<AuthOptions> authOptions, IVerifyCodeProvider verifyCodeProvider, IAccountRepository accountRepository, IPasswordHandler passwordHandler, ILoginLogHandler loginLogProvider, IAccountService accountService, ITenantResolver tenantResolver, AdminLocalizer localizer)
    {
        _authOptions = authOptions;
        _verifyCodeProvider = verifyCodeProvider;
        _accountRepository = accountRepository;
        _passwordHandler = passwordHandler;
        _loginLogProvider = loginLogProvider;
        _accountService = accountService;
        _tenantResolver = tenantResolver;
        _localizer = localizer;
    }

    public async Task<IResultModel<UsernameLoginResult>> Handle(UsernameLoginModel model)
    {
        var result = new ResultModel<UsernameLoginResult>();
        var loginLog = new LoginLogModel
        {
            LoginMode = LoginMode.Username,
            Platform = model.Platform,
            LoginTime = DateTime.Now,
            UserAgent = model.UserAgent,
            IP = model.IP
        };

        try
        {
            //检测验证码
            if (_authOptions.CurrentValue.EnableVerifyCode)
            {
                var verifyCodeCheckResult = await _verifyCodeProvider.Verify(model.VerifyCodeId, model.VerifyCode);
                if (!verifyCodeCheckResult.Successful)
                {
后面还有 92 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

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