Skip to content

Latest commit

 

History

History
81 lines (63 loc) · 1.85 KB

session-sms.md

File metadata and controls

81 lines (63 loc) · 1.85 KB

基于 Session 的邮件验证码

  1. 安装需要的 Nuget 包

        Install-Package NCaptcha.AspNetCore.SessionSms
        Install-Package NCaptcha.Targets.Sms.Aliyun
  2. appsettings.json 文件中添加配置。它取决于您选择的短信服务商:

    "CaptchaAliyunSms": {
        "AccountKeyId": "",
        "AccessKeySecret": "",
        "SmsServiceSignName": "",
        "SmsServiceTemplateCode": ""
    }
  3. 注册依赖注入服务

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSession();
        services.AddSessionBasedSmsCaptcha(builder =>
            builder.UseAliyunSmsCaptcha(Configuration.GetSection("CaptchaAliyunSms").Bind);
        );
    }
  4. 配置 Session

    public void Configure(IApplicationBuilder app)
    {
        app.UseSession();
    }
  5. 添加一个发送验证码的 Api

    public class LoginModel : PageModel
    {
        private readonly ICaptchaGenerator _captchaGenerator;
    
        public LoginModel(ICaptchaGenerator captchaGenerator)
        {
            _captchaGenerator = captchaGenerator;
        }
    
        public async Task OnPostSendCaptchaAsync() => await _captchaGenerator.GenerateCaptchaAsync();
    }
  6. 验证码验证

    public class LoginModel : PageModel
    {
        private readonly ICaptchaValidator _captchaValidator;
    
        public LoginModel(ICaptchaValidator captchaValidator)
        {
            _captchaValidator = captchaValidator;
        }
    
        public async Task<IActionResult> OnPostAsync()
        {
            if (!await _captchaValidator.ValidateAsync(Input.Captcha))
            {
                ModelState.AddModelError(nameof(InputModel.Captcha), "Invalid captcha.");
                return Page();
            }
        }
    }