using Dpz.Core.Public.ViewModel.Request;
using Dpz.Core.Public.ViewModel.Response;

namespace Dpz.Core.Service.RepositoryService;

public interface IAccountLoginHistoryService
{
    /// <summary>
    /// 登录失败
    /// </summary>
    /// <param name="account">账号</param>
    /// <param name="method">登录方式</param>
    /// <param name="status"></param>
    /// <returns></returns>
    Task LoginFailAsync(
        string account,
        LoginMethod method = LoginMethod.Password,
        LoginResultStatus status = LoginResultStatus.AccountOrPasswordError
    );

    /// <summary>
    /// 添加验证双因素错误记录
    /// </summary>
    /// <param name="account">账号</param>
    /// <param name="method">登录方式</param>
    /// <returns></returns>
    Task PinCodeErrorAsync(string account, LoginMethod method = LoginMethod.Password);

    /// <summary>
    /// 添加账号被锁记录
    /// </summary>
    /// <param name="account">账号</param>
    /// <param name="method">登录方式</param>
    /// <returns></returns>
    Task AccountLockedAsync(string account, LoginMethod method = LoginMethod.Password);

    /// <summary>
    /// 添加账号被禁用记录
    /// </summary>
    /// <param name="account">账号</param>
    /// <param name="method">登录方式</param>
    /// <returns></returns>
    Task AccountDisabledAsync(string account, LoginMethod method = LoginMethod.Password);

    /// <summary>
    /// 添加登录成功记录
    /// </summary>
    /// <param name="account">账号</param>
    /// <param name="method">登录方式</param>
    /// <returns></returns>
    Task SuccessAsync(string account, LoginMethod method = LoginMethod.Password);

    /// <summary>
    /// 检测账号是否被锁
    /// </summary>
    /// <param name="account"></param>
    /// <returns></returns>
    Task<bool> LockedAsync(string account);

    /// <summary>
    /// 获取登录历史记录
    /// </summary>
    /// <param name="request"></param>
    /// <returns></returns>
    Task<IPagedList<AccountLoginHistoryResponse>> GetPageAsync(AccountLoginHistoryRequest request);
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

代码解释

这是一个 C# 接口定义文件,定义了账号登录历史服务的契约规范。

接口概述

接口名称: IAccountLoginHistoryService

命名空间: Dpz.Core.Service.RepositoryService

用途: 管理用户账号登录历史记录的服务接口,包括登录成功、失败、锁定、禁用等各种状态的记录。

方法说明

1. LoginFailAsync - 记录登录失败

Task LoginFailAsync(string account, LoginMethod method, LoginResultStatus status)
  • 参数:
    • account: 登录账号
    • method: 登录方式(默认为密码登录)
    • status: 登录失败状态(默认为账号或密码错误)
  • 作用: 记录用户登录失败的历史

2. PinCodeErrorAsync - 记录双因素验证错误

Task PinCodeErrorAsync(string account, LoginMethod method)
  • 作用: 记录用户在双因素认证(2FA)时输入错误验证码的情况

3. AccountLockedAsync - 记录账号被锁定

Task AccountLockedAsync(string account, LoginMethod method)
  • 作用: 记录账号因某种原因被锁定的事件

4. AccountDisabledAsync - 记录账号被禁用

Task AccountDisabledAsync(string account, LoginMethod method)
  • 作用: 记录账号被禁用的事件

5. SuccessAsync - 记录登录成功

Task SuccessAsync(string account, LoginMethod method)
  • 作用: 记录用户成功登录的历史

6. LockedAsync - 检查账号锁定状态

Task<bool> LockedAsync(string account)
  • 返回值: 布尔值,表示账号是否被锁定
  • 作用: 查询账号当前是否处于锁定状态

7. GetPageAsync - 分页查询登录历史

Task<IPagedList<AccountLoginHistoryResponse>> GetPageAsync(AccountLoginHistoryRequest request)
  • 参数: AccountLoginHistoryRequest - 分页查询请求对象
  • 返回值: 分页的登录历史记录列表
  • 作用: 获取登录历史记录的分页数据

设计特点

  1. 异步设计: 所有方法都返回 Task,支持异步操作
  2. 参数默认值: 多个方法的 method 参数默认为 LoginMethod.Password
  3. 功能完整: 覆盖登录流程的各种状态(成功、失败、锁定、禁用等)
  4. 分页支持: 提供分页查询功能,适合大数据量场景

应用场景

  • 安全审计
  • 异常登录检测
  • 账号锁定机制
  • 登录行为分析
  • 合规性记录
评论加载中...