Kori 8월 14일, 2025에 포스트됨 8월 14일, 2025에 포스트됨 Antonio Zapater의 "WebStencils is About to Get More Powerful in RAD Studio 13" 를 번역했습니다. (원문 작성: 2025년 8월, 최종 번역: 2025년 8월) 이 블로그 기고는 RAD Studio 소프트웨어의 출시 전 버전을 기반으로 작성되었다. 무슨 기능이든 GA (정식 출시, General Availability)에 반드시 포함된다는 보장은 없다. 웹 개발이 훨씬 더 쉬워질 것이다. RAD Studio (RAD 스튜디오) 13에 기능 향상이 추가될 예정이다. 우리는 여러분의 피드백을 경청하고 있다. 그리고 새 기능을 출시해 여러분이 안전한 웹 애플리케이션과 서비스를 훨씬 빠르게 구축할 수 있도록 돕는 새 기능들을 제공한다. 목차 세션 관리가 간단해진다 인증(Authentication)이 번거롭지 않다 역할-기반 권한부여(Role-Based Authorization) 더 좋은 호스팅 옵션들이 웹 브로커 애플리케이션을 위해 제공된다 결론 웹스텐실즈와 HTMX: 빠른 웹 개발을 위한 무료 가이드 세션 관리가 간단해진다 새 TWebSessionManager 컴포넌트가 제공된다. 그래서 여러분은 수준높은 세션(session) 관리를 즉시 할 수 있다. 쿠키-기반 세션(기본값), 헤더-기반 세션, 쿼리 파라미터 세션 등 어느 방식이든, WebStencils(웹스텐실즈) 템플릿 안에서 모든 세션 데이터들을 @session.xxx 문장을 통해 사용할 수 있다. 이것이 정말 멋진 이유는 세션 범위 지정의 유연성 때문이다. 여러분은 제한없는(unlimited) 세션, 인증된 사용자별 세션, (보안이 더 강력한) 사용자-IP 조합당 세션 등을 사용할 수 있다. 세션은 설정된 시간 초과 후 자동으로 만료된다. 또한, 여러분은 DataVars 안에 직접 각 세션을 손쉽게 저장할 수 있다. 그러면, 애플리케이션 전체에서 쉽게 접근할 수 있다. 접근 방법은 단순명확하다. TWebRequest.Session은 현재 세션을 제공한다. 여러분의 Delphi(델파이) 또는 C++ 코드 안에서 사용하면 된다. 그러면, 여러분의 사용자 정의 데이터를 저장하거나 추출하기를 즉시 할 수 있다. 별다른 설정 코드가 전혀 필요 없다. WebStencils 안에서 세션 데이터에 접근하려면, @session.customObject 또는 (보다 편한 단축 형식인) @customObject 문장을 사용하면 된다. 그러면, DataVars 안에 저장된 오브젝트를 가져올 수 있다. 따라서, 세션 참조를 길게 적을 필요가 없다. 인증(Authentication)이 번거롭지 않다 인증(Authentication)을 위해서 예전에는 수많은 보일러플레이트 코드(boilerplate code, 반복되는 공통 코드)를 작성해야 했다. 이제는 그렇지 않다. RAD Studio 13 안에는 바로 사용 가능한 두 가지 인증기(authenticator)가 제공된다. TWebBasicAuthenticator: 표준 HTTP 기본(Basic) 인증용 TWebFormsAuthenticator: 맞춤형 HTML 폼-기반 로그인(form-based login) 흐름용 TWebFormsAuthenticator는 특히 간편하다. 여러분을 위해, 전체 로그인 흐름을 처리해 준다. 여러분이 LoginURL, FailedURL, HomeURL 프로퍼티를 설정해 놓으면, 인증되지 않은 사용자는 자동으로 로그인 페이지로 보내지고, POST 자격증명(credential)을 처리하고, 그 사용자가 원래 가려고 했던 위치로 다시 돌려보내진다. 이 때는 returnUrl 파라미터가 사용된다. 여러분이 구현해야 하는 것은 OnAuthenticate 이벤트뿐이다. 그 안에서 여러분의 사용자 저장소에 대해 자격 증명의 유효성을 검사하면 된다. procedure TMainWebModule.WebFormsAuthenticatorAuthenticate(Sender: TCustomWebAuthenticator; Request: TWebRequest; const UserName, Password: string; var Roles: string; var Success: Boolean); begin Success := False; Roles := ''; if ValidateUserCredentials(UserName, Password) then begin Success := True; Roles := GetUserRoles(UserName); end; end; 역할-기반 권한부여(Role-Based Authorization) 보안(Security)은 사용자가 누구인지 아는 것만이 아니다. 사용자가 무엇을 할 수 있는지도 제어할 수 있어야 한다. 새 TWebAuthorizer 컴포넌트는 유연한 역할-기반 접근 제어(role-based access control)를 권한부여 구역(authorization zone)들을 통해 제공한다. 여러분은 URL 패턴(예: /admin*)을 사용해 애플리케이션의 전체 구역(section)을 보호할 수 있다. 또한 어느 사용자 역할(user role)들 접근 권한을 가지는 지에 대해, 간단한 쉼표로 구분된 목록을 통해 명시할 수 있다. 권한부여 수준(authorization level)들을 사용하면 세밀하게 제어할 수 있다. zkFree는 익명(anonymous) 접근을, zkProtected는 인증된(authenticated) 사용자 접근만, zkIgnore는 처리를 완전히 생략할 때 사용하면 된다. 권한획득(authorization)에 실패한 사용자는 자동으로 UnauthorizedURL로 보내지거나 또는 (인증된 사용자라면) 403 상태를 반환 받게 된다. WebStencils 템플릿 안에서, 이제 여러분은 사용자 역할(user role)을 기준으로 내용을 직접 표시하거나 숨길 수 있다. 예를 들어, @session.UserHasRole(‘admin’) 같은 문장을 사용하면 된다. 즉, 원한다면, 사용자 권한에 따라 템플릿의 모든 구역들을 통째로 표시하거나 숨기는 것도 가능하다. 더 좋은 호스팅 옵션들이 웹 브로커 애플리케이션을 위해 제공된다 이와 더불어, 여러분의 웹 브로커(Web Broker) 배포 옵션들이 확장될 것이다. FastCGI를 지원하기 때문이다. 덕분에, NGINX등 최신 웹 서버들을 더 쉽게 사용할 수 있다. FastCGI 애플리케이션은 별도의 프로세스로 실행된다. 따라서, 격리성(isolation)과 확장성(scalability)이 기존 방식보다 더 좋다. 또한, 로그 기록 지원이 향상된다. 그래서 여러분의 웹 서버에 들어있는 네이티브 로그 기록 시스템을 사용하기 쉽다. Apache, IIS든지 기타 호스팅 환경이든 모두 해당된다. 결론 이 기능들은 단순한 추가 개선이 아니다. 이것들은 최신 웹 애플리케이션을 위한 빌딩 블록(building block, 구성 요소)들이다. 세션 관리, 인증(authentication), 권한부여(authorization), 유연한 배포 옵션들은 웹 브로커 안에 들어갈 예정이다. 따라서 여러분은 (이런 부가 기초 작업이 아니라) 뛰어난 기능을 개발하는 데만 집중하면 된다. 웹스텐실즈와 HTMX: 빠른 웹 개발을 위한 무료 가이드 웹스텐실즈와 HTMX 무료 가이드는 이제, 한국어, 영어, 독일어, 포루투갈어, 스페인어, 중국어 번체, 중국어 간체로도 제공된다. 이 책에는 여러분이 HTMX와 WebStencils를 사용할 때 도움이 되는 실전 예시들과 유용한 기법들이 가득 담겨있다. 이 블로그 기고는 RAD Studio 소프트웨어의 출시 전 버전을 기반으로 작성되었다. 무슨 기능이든 GA (정식 출시, General Availability)에 반드시 포함된다는 보장은 없다. 인용하기
Recommended Posts
이 토의에 참여하세요
지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.