【个人博客搭建】(25)做一个图形验证码功能

在系统的注册、登录等场景,都有很多类似的案例。也有类似于滑动验证、选字顺序验证等效果。今天带来的是文件流形式的,相当于动态图片吧

1、安装nuget包:Lazy.Captcha.Core

2、 在入口文件中注入:

#region 图形验证码

builder.Services.AddCaptcha(option =>
{
    option.CaptchaType = CaptchaType.WORD_NUMBER_LOWER; //验证码类型
    option.CodeLength = 6; //验证码长度, 要放在CaptchaType设置后.  当类型为算术表达式时,长度代表操作的个数
    option.ExpirySeconds = 120; //验证码过期时间
    option.IgnoreCase = true; //比较时是否忽略大小写
    option.StoreageKeyPrefix = ""; //存储键前缀

    option.ImageOption.Animation = true; //是否启用动画
    option.ImageOption.FrameDelay = 300; //每帧延迟,Animation=true时有效, 默认30

    option.ImageOption.Width = 132; //验证码宽度
    option.ImageOption.Height = 40; //验证码高度

    option.ImageOption.BubbleCount = 3; //气泡数量
    option.ImageOption.BubbleMinRadius = 5; //最小半径
    option.ImageOption.BubbleMaxRadius = 15; //最大半径
    option.ImageOption.BubbleThickness = 1; //边沿厚度

    option.ImageOption.InterferenceLineCount = 3; //干扰线数量

    option.ImageOption.FontFamily = DefaultFontFamilys.Instance.Actionj; //字体
    option.ImageOption.FontSize = 36; //字体大小
    option.ImageOption.TextBold = true;//粗体

});

#endregion

3、获取:

控制器构造函数注入    private readonly ICaptcha _captcha;


    /// <summary>
    /// 获取验证码
    /// </summary>
    /// <param name="id">验证码唯一id</param>
    /// <returns></returns>
    [HttpGet]
    public IActionResult Captcha([FromQuery] string id)
    {
        var data = _captcha.Generate(id);
        var stream = new MemoryStream(data.Bytes);
        return new FileStreamResult(stream, "image/gif");
    }

4、测试:

在前端中,就可以直接用这个url作为img的src

<el-button class="login-content-code" v-waves @click="onCaptchaChange">
          <img :src="captchaUrl" alt="看不清?点击换一张!" />
        </el-button>

 5、验证:

 bool validate = _captcha.Validate(Id, Code);
 if (!validate)
 {
     //验证码错误
 }

6、其他类型的验证这里暂时不做分享,后续有空再做补充分享。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值