ASP.NET 을 사용 하여 간단 한 인증 코드 를 만 드 는 방법
과학 보급 해 봐,GDI+가 뭐야?
GDI+는 그래 픽 장치 인터페이스(GDI)의 고급 버 전 으로 다양한 그래 픽 이미지 처리 기능 을 제공 합 니 다.GDI+는 주로 2 차원 벡터 그래 픽,이미지 처리 와 레이아웃 3 부분 으로 구성 되 어 있 습 니 다.GDI+는 다양한 글꼴,글꼴,스타일 을 사용 하여 텍스트 를 표시 하 는 복잡 한 작업 에 많은 지원 을 제공 합 니 다.
다음은 인증 코드 를 말씀 드 리 겠 습 니 다.인증 코드 와 같은 그림 에 대해 저 는 두 부분 으로 구성 되 었 다 고 생각 합 니 다.하 나 는 사각형 의 배경 이 고 다른 하 나 는 그 위 에 있 는 알파벳 숫자 조합 입 니 다.(어떤 때 는 한자 가 있 고 어떤 때 는 알파벳 이나 순수한 숫자 가 있 습 니 다.이것 은 통 일 된 규정 이 없 는데 어떻게 선택 하 시 겠 습 니까?)사각형 의 배경 에 대해 우 리 는 직접 그것 을 캔버스,알파벳 숫자 로 조합 할 수 있 습 니까?우 리 는 무 작위 수 를 이용 하여 새로운 조합 을 맞 출 수 있다.이렇게 모든 과정 을 우 리 는 다 생각 했 습 니 다.다음은 코드 를 보 겠 습 니 다.
제 가 쓴 이 인증 코드 는 5 글자 길이 이 고 대소 문자 영문 자모+숫자 로 무 작위 로 조합 되 어 있 습 니 다.
private readonly char[] constant = {
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};//
protected void Page_Load(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(100, 25);// , 100, 25, ,
Graphics g = Graphics.FromImage(bitmap);//
g.Clear(Color.YellowGreen);//
Font font1 = new Font("Arial", 15);//
Brush brush = new SolidBrush(Color.Blue);//
Pen myPen = new Pen(Color.Blue, 5);//
StringBuilder random = new StringBuilder(5); // ,
Random rd = new Random();//
for (int i = 0; i < random.Capacity; i++)
{
random.Append(constant[rd.Next(62)]);// random
}
g.DrawString(random.ToString(), font1, brush, 10, 5);//
System.IO.MemoryStream ms = new System.IO.MemoryStream();// MemoryStream
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);// gif
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());//
}
생 성 효 과 는 다음 과 같 습 니 다:이렇게 하면 쉽게 식별 할 수 있다 고 생각 하 실 수 있 습 니 다.저희 가 평소에 사이트 에 접속 할 때 입력 한 인증 코드 에 비해 초등학생 같 습 니 다.물론 우 리 는 약간의 변 화 를 할 수 있 고,비교적 일정한 각 도 를 더 할 수 있다.
private readonly char[] constant = {
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};//
protected void Page_Load(object sender, EventArgs e)
{
Bitmap bitmap = new Bitmap(100, 25);// , 100, 25, ,
Graphics g = Graphics.FromImage(bitmap);//
g.Clear(Color.YellowGreen);//
Font font1 = new Font("Arial", 15);//
float angle = 60;//
float length = 0;// ,
Brush brush = new SolidBrush(Color.Blue);//
Pen myPen = new Pen(Color.Blue, 5);//
StringBuilder random = new StringBuilder(5); // ,
Random rd = new Random();//
for (int i = 0; i < random.Capacity; i++)
{
random.Append(constant[rd.Next(62)]);// random
g.ResetTransform();//
SizeF size = g.MeasureString(random[random.Length - 1].ToString(), font1);//
g.TranslateTransform(length + size.Width / 2, size.Height / 2);//
g.RotateTransform((float)rd.NextDouble() * angle * 2 - angle);//
g.DrawString(random[random.Length - 1].ToString(), font1, brush, new PointF(-size.Width / 2, -size.Height / 2));// , , 5 ,
length += size.Width;//
}
System.IO.MemoryStream ms = new System.IO.MemoryStream();// MemoryStream
bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);// gif
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());//
}
이때 생 성 된 효 과 는 다음 과 같 습 니 다.좀 더 프로 페 셔 널 해 보이 지 않 아 요?만약 여러분 이 아직도 마음 에 들 지 않 는 다 면 GDI+의 관련 내용 을 살 펴 보고 소음 요 소 를 추가 하거나 선 같은 것 을 삭제 함으로써 식별 난이 도 를 높이 는 목적 을 달성 할 수 있 습 니 다.저 는 일일이 열거 하지 않 겠 습 니 다.
인증 코드 를 어떻게 그 리 는 지 에 대해 서 는 우리 가 말 했 지만,아직 두 가지 문제 가 있 으 니,나 는 그래도 좀 더 말 하고 싶다.
1.우리 가 실제 출력 한 것 은 바 이 너 리 흐름 입 니 다.어떻게 페이지 에 표시 되 고 페이지 의 다른 요소 와 공존 할 수 있 습 니까?
여기 서 통용 되 는 방법 은 인증 코드 를 그린 이 코드 를 독립 된 웹 창 에 넣 고 인증 코드 를 표시 해 야 하 는 다른 페이지 에요 소 를 놓 아 src 속성 을 이 인증 코드 페이지 의 url 로 가리 키 는 것 입 니 다.예 를 들 어 내 가 쓴 단락 은 이렇다.
<asp:Image ID="image_validatecode" runat="server" ImageUrl="~/PublicMethod/ValidateCode.aspx" style="padding-left:3px"/>
사실 여기 서 저 는 여러분 이 통용 하 는 방법 을 사 용 했 습 니 다.그러나 저 는 예전 에 웹 사용자 정의 컨트롤 을 따로 써 서 인증 코드 를 만들어 서 사 용 했 습 니 다.그러나 페이지 에 끌 어 다 놓 은 후에 실 행 했 을 때 페이지 의 다른 요 소 를 덮어 버 렸 습 니 다.구체 적 인 원인 은 저도 잘 모 르 겠 습 니 다.2.인증 코드 의 주요 목적 은 검증 에 사용 되 기 때문에 저 희 는 사용자 이름,비밀번호 가 합 법 적 인지 여 부 를 제외 하고 현재 입력 한 인증 코드 가 그림 의 인증 코드 와 일치 하 는 지 판단 해 야 합 니 다.
내 위의 코드 에는 이것 이 쓰 여 있 지 않다.사실은 최종 인증 코드 를 무 작위 로 생 성 한 후에 그 값 을 session 에 저장 하면 된다.그리고 사용자 이름,비밀 번 호 를 판단 하 는 동시에 이 session 값 을 비교 하면 됩 니 다.예:
Session["login_validate_code"] = random.ToString();
3.어떻게 사용자 가 이 인증 코드 를 잘 보지 못 하고 바 꾸 려 면 어떻게 해 야 합 니까?스 크 립 트 를 통 해 img 요소 의 src 속성 에 url 을 다시 할당 할 수 있 습 니 다.물론 귀 찮 으 면 ajax 를 사용 하여 실현 할 수 있 습 니 다.직접 해 보 세 요.
이상 이 바로 본 고 에서 공유 한 인증 코드 를 만 드 는 모든 과정 입 니 다.마음 에 드 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
HttpGuardHttpGuard 는 openresty 를 기반 으로 lua 스 크 립 트 언어 로 개 발 된 cc 공격 방지 소프트웨어 입 니 다.한편, openresty 는 고성능 웹 서버 Nginx 와 일련의 Nginx 모듈 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.