美文网首页
.Net Core 实现验证码功能

.Net Core 实现验证码功能

作者: 成麓撼aubr | 来源:发表于2017-10-17 15:04 被阅读0次

    背景:


    阅读新闻

    .Net Core 实现验证码功能

    [日期:2017-02-23]

    来源:Linux社区

    作者:niao

    [字体:大 中 小]

    本文介绍.Net Core下用第三方ZKWeb.System.Drawing实现验证码功能。

    通过测试的系统:

    Windows8.1 64bit

    Ubuntu Server16.04 LTS 64bit

    Fedora24 64bit

    CentOS7.2 64bit

    可以实现以下功能:

    Open jpg, bmp, ico, png

    Save jpg, bmp, ico, png

    Resize image

    Draw graphics with brush and pen

    Open font and drawstring

    以上是官方给的资料。

    No.1 项目引入ZKWeb.System.Drawing

    NuGet引入包,不会的自己Google。

    No.2 简单的验证码生成

    int codeW=80;

    int codeH=30;

    int fontSize=16; Random rnd=new Random();

    //颜色列表,用于验证码、噪线、噪点

    Color[] color= { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue };

    //字体列表,用于验证码

    string[] font={ "Times New Roman" };

    //验证码的字符集,去掉了一些容易混淆的字符

    //写入Session、验证码加密

    //WebHelper.WriteSession("session_verifycode", Md5Helper.MD5(chkCode.ToLower(), 16));

    //创建画布

    Bitmap bmp=new Bitmap(codeW, codeH);

    Graphics g= Graphics.FromImage(bmp);

    g.Clear(Color.White);

    //画噪线

    for (int i=0; i < 1; i++)

    {

    int x1= rnd.Next(codeW);

    int y1= rnd.Next(codeH);

    int x2= rnd.Next(codeW);

    int y2= rnd.Next(codeH);

    Color clr= color[rnd.Next(color.Length)];

    g.DrawLine(new Pen(clr), x1, y1, x2, y2);

    }

    //画验证码字符串

    for (int i=0; i < chkCode.Length; i++)

    {

    string fnt= font[rnd.Next(font.Length)];

    Font ft=new Font(fnt, fontSize);

    Color clr= color[rnd.Next(color.Length)];

    g.DrawString(chkCode[i].ToString(), ft,new SolidBrush(clr), (float)i * 18, (float)0);

    }

    //将验证码图片写入内存流,并将其以 "image/Png" 格式输出

    MemoryStream ms=new MemoryStream();

    try

    {

    bmp.Save(ms, ImageFormat.Png);

    return ms.ToArray();

    }

    catch (Exception)

    {

    return null;

    }

    finally

    {

    g.Dispose();

    bmp.Dispose();

    }

    No.3 发布部署运行

    直接上图,不会的看这里 http://www.linuxidc.com/Linux/2017-02/140957.htm

    九度快排系统und-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="http://www.linuxidc.com/upload/2017_02/170223090881812.png" alt="image" width="361" height="168" border="0" />

    注意:验证码Windows下生成无压力,我用的Ubuntu 14,需要安装gdi包,运行日志中会有提示。

    安装方法:

    Ubuntu 16.04:

    apt-get install libgdiplus

    cd /usr/lib

    ln -s libgdiplus.so gdiplus.dll

    Fedora 23:

    dnf install libgdiplus

    cd /usr/lib64/

    ln -s libgdiplus.so.0 gdiplus.dll

    CentOS 7:

    yum install autoconf automake libtool

    yum install freetype-devel fontconfig libXft-devel

    yum install libjpeg-turbo-devel libpng-devel giflib-devel libtiff-devel libexif-devel

    yum install glib2-devel cairo-devel

    git clone https://github.com/mono/libgdiplus

    cd libgdiplus

    ./autogen.sh

    make

    make install

    cd/usr/lib64/

    ln -s /usr/local/lib/libgdiplus.so gdiplus.dll

    本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-02/140958.htm

    linux

    Ubuntu 14.04下.Net Core 安装部署过程

    Ubuntu 14.04搭建GitLab服务器

    相关资讯

    .NET Core

    .NET Core和.NET Standard有什么不 (今 08:07)

    CentOS 7环境下使用Nginx托管.Net (10月01日)

    .NET Core 2.0最终版本发布了 (08月16日)

    论 HTTP 性能,Go 与 .NET Core 一 (10月07日)

    .NET Core 2.0 是您的最好选择吗? (09月05日)

    .NET Core引入性能分析引导优化 (08月03日)

    本文评论

    查看全部评论 (0)

    表情: 表情

    姓名:

    匿名

    字数

    同意评论声明

    评论声明

    尊重网上道德,遵守中华人民共和国的各项有关法律法规

    承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    本站管理人员有权保留或删除其管辖留言中的任意内容

    本站有权在网站内转载或引用您的评论

    参与本评论即表明您已经阅读并接受上述条款

    最新资讯

    .NET Core和.NET Standard有什么不同

    使用LLDB调试Swift

    Google Cloud和HashiCorp扩展合作

    Keepalived两节点出现双VIP情况及解决方法

    CentOS7安装配置PostgreSQL9.6

    编译LNMP之Nginx+php-fpm

    Apache httpd反向代理使用详细分析

    平稳切换Nginx版本

    Microsoft Edge脚本引擎远程内存破坏漏洞(

    广受欢迎的Dash to Panel GNOME扩展程序已

    背景:

    阅读新闻

    Ubuntu 14.04搭建GitLab服务器

    [日期:2017-02-23]

    来源:Linux社区

    作者:blacktime

    [字体:大 中 小]

    因为工作需要搭建一个版本控制器。查看资料,当前比较流行的有GitHub,SVN。由于常用GitLab,所以更倾向于GitLab。下面记录了Ubuntu 14.04下搭建GitLab服务器的流程。

    1.安装邮件支持的插件:

    sudo apt-get install curl openssh-server ca-certificates postfix

    安装过程中出现的界面均可选择默认。

    2.添加官方源,并安装:

    curl -sS http://packages.gitlab.cc/install/gitlab-ce/script.deb.sh | sudo bash

    sudo apt-get install gitlab-ce

    出现如下即为安装完成:

    3.安装好后需要生成配置:

    sudo gitlab-ctl reconfigure

    出现如下图,配置生成完毕:

    按照上面步骤即可安装完成gitlab服务器,网页即可正常访问。由于官方源安装速度堪比蜗牛,于是用迅雷把安装包下载下来,直接安装。

    sudo dpkg -i gitlab-ce-XXX.deb

    安装好后生成配置即可网页访问。

    初始账号和密码为root:5iveL!fe,登录后会提示修改密码,修改成自己的密码即可。

    更多GitLab相关教程见以下内容:

    Ubuntu 14.04下安装GitLab指南 http://www.linuxidc.com/Linux/2015-12/126876.htm

    如何在Ubuntu Server 14.04下安装Gitlab中文版 http://www.linuxidc.com/Linux/2015-12/126875.htm

    CentOS源码安装GitLab汉化版 http://www.linuxidc.com/Linux/2015-10/124648.htm

    在 Ubuntu 12.04 上安装 GitLab http://www.linuxidc.com/Linux/2012-12/75249.htm

    GitLab 5.3 升级注意事项 http://www.linuxidc.com/Linux/2013-06/86473.htm

    在 CentOS 上部署 GitLab (自托管的Git项目仓库) http://www.linuxidc.com/Linux/2013-06/85754.htm

    在RHEL6/CentOS6/ScientificLinux6上安装GitLab 6.0.2 http://www.linuxidc.com/Linux/2014-03/97831.htm

    CentOS 6.5安装GitLab教程及相关问题解决 http://www.linuxidc.com/Linux/2014-05/101526.htm

    升级GitLab到8.2.0 http://www.linuxidc.com/Linux/2015-12/126220.htm

    GitLab 的详细介绍:请点这里

    GitLab 的下载地址:请点这里

    本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-02/140959.htm

    linux

    .Net Core 实现验证码功能

    获取Docker私有仓库中所有镜像的方法

    相关资讯

    GitLab服务器搭建 Ubuntu 14.04搭建GitLab服务器

    本文评论

    查看全部评论 (0)

    表情: 表情

    姓名:

    匿名

    字数

    同意评论声明

    评论声明

    尊重网上道德,遵守中华人民共和国的各项有关法律法规

    承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    本站管理人员有权保留或删除其管辖留言中的任意内容

    本站有权在网站内转载或引用您的评论

    参与本评论即表明您已经阅读并接受上述条款

    最新资讯

    获取Docker私有仓库中所有镜像的方法

    Python实现子网掩码地址与位长的相互转换

    Ubuntu 14.04搭建GitLab服务器

    .Net Core 实现验证码功能

    Ubuntu 14.04下.Net Core 安装部署过程

    .NET Core 工具中的新内容

    深度学习在Gilt上的应用

    Twitter数据中心网络及软件体系建设经验

    Linus Torvalds: 成功的项目源于99%的汗水

    在Linux上编译dotnet cli的源代码生成.NET

    背景:

    阅读新闻

    Python实现子网掩码地址与位长的相互转换

    [日期:2017-02-23]

    来源:Linux社区

    作者:blacktime

    [字体:大 中 小]

    某日,使用CentOS7,发现网络配置时,子网掩码需要手动转换;因为CentOS 7的网络配置方式为:

    nmcli connection enp4s0 modify ipv4.methord manual ipv4.address "192.168.1.120/24" ipv4.gateway "192.168.1.1" ipv4.dns "223.5.5.5"

    其中没有子网掩码的配置项。于是,写一函数,实现子网掩码和位长的相互转换。

    一:子网掩码转化为位长:

    # coding:utf-8

    def exchange_mask(mask):

    # 计算二进制字符串中 '1' 的个数

    count_bit=lambda bin_str: len([i for i in bin_str if i=='1'])

    # 分割字符串格式的子网掩码为四段列表

    mask_splited=mask.split('.')

    # 转换各段子网掩码为二进制, 计算十进制

    mask_count=[count_bit(bin(int(i))) for i in mask_splited]

    return sum(mask_count)

    if __name__=='__main__':

    print exchange_mask('255.255.0.0')

    二:位长转化为子网掩码:

    #codint=utf8

    def exchange_maskint(mask_int):

    bin_arr=['0' for i in range(32)]

    for i in range(mask_int):

    bin_arr[i]='1'

    tmpmask=[''.join(bin_arr[i * 8:i * 8 + 8]) for i in range(4)]

    tmpmask=[str(int(tmpstr, 2)) for tmpstr in tmpmask]

    return '.'.join(tmpmask)

    if __name__=='__main__':

    print exchange_maskint(24)

    下面关于Python的文章您也可能喜欢,不妨参考下:

    《Python核心编程 第二版》.(Wesley J. Chun ).[高清PDF中文版] 下载见 http://www.linuxidc.com/Linux/2013-06/85425.htm

    零基础如何入门Python http://www.linuxidc.com/Linux/2016-10/136485.htm

    Ubuntu 14.04安装Python 3.3.5 http://www.linuxidc.com/Linux/2014-05/101481.htm

    CentOS 6.5 脚本自动化装 Python2.6升级2.7 http://www.linuxidc.com/Linux/2017-02/140406.htm

    CentOS上源码安装Python3.4 http://www.linuxidc.com/Linux/2015-01/111870.htm

    Ubuntu 14.04下Python数据处理环境搭建 http://www.linuxidc.com/Linux/2017-01/139568.htm

    Python Paramiko模块安装和使用 http://www.linuxidc.com/Linux/2017-01/139973.htm

    《Python开发技术详解》.( 周伟,宗杰).[高清PDF扫描版+随书视频+代码] http://www.linuxidc.com/Linux/2013-11/92693.htm

    在CentOS 6.5上安装Python2.7 http://www.linuxidc.com/Linux/2016-10/136206.htm

    Ubuntu 14.04 LTS下编译安装Open Babel和Python语言绑定 http://www.linuxidc.com/Linux/2017-01/139569.htm

    Python常见数据结构整理 http://www.linuxidc.com/Linux/2017-02/140613.htm

    本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-02/140960.htm

    linux

    Java虚拟机收集器之老年代收集器

    从0移植uboot (一) _配置分析

    相关资讯

    子网掩码地址与位长转换 子网掩码地

    本文评论

    查看全部评论 (0)

    表情: 表情

    姓名:

    匿名

    字数

    同意评论声明

    评论声明

    尊重网上道德,遵守中华人民共和国的各项有关法律法规

    承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    本站管理人员有权保留或删除其管辖留言中的任意内容

    本站有权在网站内转载或引用您的评论

    参与本评论即表明您已经阅读并接受上述条款

    最新资讯

    从0移植uboot (一) _配置分析

    Cisco Prime Collaboration Assurance信息

    CentOS 7安装MySQL分支MariaDB

    CentOS 7.2部署Percona Monitoring and

    Chrome Canary 新增对 MacBook Pro Touch

    CentOS安装MariaDB数据库(MySQL的分支)

    CentOS 7.2部署FTP

    Docker中运行的Java 9将能调整内存限制

    Twitter基于React的网络协议栈媲美原生性能

    LLVM 4中将加入新的LLVM链接器LLD

    相关文章

      网友评论

          本文标题:.Net Core 实现验证码功能

          本文链接:https://www.haomeiwen.com/subject/lseduxtx.html