Skip to content

Latest commit

 

History

History
67 lines (51 loc) · 1.44 KB

session-image.md

File metadata and controls

67 lines (51 loc) · 1.44 KB

基于 Session 的图片验证码

  1. 安装需要的 Nuget 包

        Install-Package NCaptcha.AspNetCore.SessionImages
  2. 注册依赖注入服务

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddSession();
        services.AddSessionBasedImageCaptcha();
    }
  3. 配置 Session

    public void Configure(IApplicationBuilder app)
    {
        app.UseSession();
    }
  4. 添加一个生成图片的 Api

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

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