Skip to content

Files

Latest commit

Sep 16, 2019
ab12fb5 · Sep 16, 2019

History

History
67 lines (51 loc) · 1.45 KB

session-image.md

File metadata and controls

67 lines (51 loc) · 1.45 KB

Images captcha base session

  1. Install the required nuget package

        Install-Package NCaptcha.AspNetCore.SessionImages
  2. Register in DI

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSession();
        services.AddSessionBasedImageCaptcha();
    }
  3. Configure the session

    public void Configure(IApplicationBuilder app)
    {
        app.UseSession();
    }
  4. Add a API for getting captcha image

    public class LoginModel : PageModel
    {
        private readonly ICaptchaGenerator _captchaGenerator;
    
        public LoginModel(ICaptchaGenerator captchaGenerator)
        {
            _captchaGenerator = captchaGenerator;
        }
    
        public async Task<IActionResult> OnGetCaptchaAsync() => await _captchaGenerator.GetCaptchaFileResultAsync();
    }
  5. Validate the captcha

    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();
            }
        }
    }