첫 번째 반영은 확인 코드의 이러한 속성을 설정할 수 있는지 여부입니다(즉, 클래스로 캡슐화한 다음 공개 속성 및 메서드를 노출하여 사용하는지, 아니면 일반 핸들러에서 확인을 직접 구현하는지 여부). 코드 생성 후 출력), 결과는 안타깝게도 후자입니다... 적어도 나처럼 알고리즘을 거의 이해하지 못하는 사람에게는 내부 알고리즘이 꽤 좋다고 느껴져서 그것을 캡슐화하려고 생각했고 그녀는 그것을 뻔뻔하게 자신의 클래스 라이브러리에 통합했습니다. ^^
먼저 이 코드의 단점을 분석해 보세요(그녀가 생각하는 것):
1. 절차적 프로그래밍의 경우 인증 코드 속성을 수정하려는 경우 글꼴 크기, 배경색 등을 수정합니다. 자세한 내용은 일반 처리 프로그램에서 해당 코드를 찾아 수정해야 합니다. 다만 이 코드는 인증코드 문자열 생성과 이미지 생성을 다른 방식으로 분리해 수정할 곳을 쉽게 찾을 수 있어 더 좋다.
2. 이 기능을 winform 프로그램 등 다른 곳에 적용하려면 이 코드를 컴포넌트(dll) 형태로 재사용할 수는 없지만 복사, 붙여넣기, 수정은 가능합니다...
3. 인증코드가 생성된 후 저장된 것을 발견하지 못했습니다(--!)
물론 소위 단점은 상대적입니다. 그것에 대해 생각하고 천천히 검증 코드 클래스를 디자인하면 확실히 상대적으로 좋은 클래스가 될 수 있지만 프로젝트를 진행 중이고 프로젝트가 긴급한 경우에는 실제로 이러한 코드가 더 강력합니다. 디자인 패턴 지향 코드 디커플링은 그냥 구름입니다~~
다음 단계는 이 코드를 수정하는 것입니다. 먼저 어떤 효과를 원하는지, 즉 캡슐화한 후 어떻게 사용할 것인지 결정합니다. 우선, 이를 사용할 때 새로운 인증 코드 인스턴스만 생성하면 되고(필요한 경우 인증 코드의 다양한 속성을 임의로 설정할 수 있음) 그런 다음 이 인스턴스의 특정 메서드를 호출하여 문자열을 사용할 수 있기를 바랍니다. , 스트림, 비트맵 객체, 바이트 각각 배열 형태로 이 인증 코드를 얻습니다. (이 인증 코드 클래스에는 인증 코드를 컨텍스트에 저장하는 기능이 포함되어 있지 않습니다. 개인적으로 인증 코드를 생성하는 것 같습니다. 확인 코드를 컨텍스트에 저장하는 것은 두 가지 다른 기능입니다. 이 기능을 확인 코드 클래스에 추가할 필요는 없습니다. 이런 경우 일반 처리 프로그램에서는 코드가 굉장히 단순해집니다. 먼저 new로 인증코드를 생성한 뒤 메소드를 호출해 문자열 형태로 인증코드를 얻은 뒤 오전, 오후에 저장하면 됩니다. 세션 또는 쿠키에 존재하는지 여부는 필요에 따라 제공되며 확인 코드 클래스는 이에 대해 신경 쓰지 않고 바이트 배열 형식으로 확인 코드를 얻기 위해 다른 메서드를 호출합니다. context.Response.BinaryWrite() 메소드를 통해 출력됩니다. 즉, 일반 처리 프로그램에는 세 줄의 코드만 있습니다. 호출 코드는 대략 다음과 같습니다.
/// <summary> /// 获取验证码(一般处理程序入口函数) /// </summary> /// <param name="context">当前上下文</param> public void ProcessRequest(HttpContext context) { // 创建验证码 ValidateCode validateCode = new ValidateCode(); // 获取验证码(字符串),写入Session context.Session["SomeValidateCode"] = validateCode.GetString(); // 输出验证码(图片) context.Response.BinaryWrite(validateCode.GetByteArray()); }
PS: 처음 작업을 시작했을 때 코드가 형편없게 작성되었던(지금보다 더 나빴음) 기억이 나네요. 보통 코드 사본을 받을 때 직접 사용합니다. .. 코드를 수정하거나 캡슐화할 것인지 생각해 본 적이 없습니다. 당시 스승님에게 가르침을 받았는데 매우 감동받았습니다. 개인적으로 다른 사람의 코드를 사용해도 문제가 없다고 생각합니다. 우선 다른 사람들은 최소한 코드의 유용성을 증명하기 위해 사용했습니다. 게다가 제한된 IQ로 인해 다른 사람들이 생각하는 것만큼 좋지 않은 것도 있습니다. 활용하고 싶지만 남의 코드를 무작정 사용해서는 안 됩니다. 단순한 레이어라도 실제 상황에 따라 필요한 수정이나 캡슐화를 해서 사용하는 것이 가장 좋습니다. 물론, 다시 말하지만, 프로젝트가 긴급하다면 분명히 시간 낭비입니다. 간단히 말해서, 그것에 대해 생각하지 말고, 받자마자 사용하십시오. 적어도 키 코드나 전체 구조를 확인하십시오. 코드는 명확합니다.
더 많은 캡슐화된 asp.net 인증 코드 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!