曾经几时,90年代用delphi7开发过CGI,速度非常快,效率非常高!但是互联网快速的发展,浏览器的各行业的普及,delphi也因为没有及时拥抱web的开发,一度被人遗忘。一路走来,delphi磕磕碰碰,度过了30个春秋。RAD Studio 13即将发布,delphi V13和c++builder V13的到来,让Web开发将变得更加容易。
目前Delphi V12的WebStencils演示项目,竟然是原生支持Docker!在新即将发布的RAD Studio 13,新的控件将使它使用更加简单高效。
会话管理变得简单
新的TWebSessionManager组件为您提供了开箱即用的高级会话管理。无论您需要基于cookie的会话(默认)、基于标头的会话还是查询参数会话,所有会话数据都可以通过@session.xxx语法。
让它变得更好的是会话范围的灵活性。您可以拥有无限的会话,每个经过身份验证的用户一个会话,甚至每个用户-IP组合一个会话,以增强安全性。会话在可配置的超时后会自动过期,您可以直接在中轻松存储每个会话的自定义对象数据变量以便在整个应用程序中轻松访问。
访问非常简单:TWebRequest.session在您的Delphi或C++代码中提供当前会话,允许您立
即开始存储和检索您的自定义数据,而无需任何设置代码。
在WebStencils中,使用@session.customObject,或者使用方便的快捷方式@customObject获取存储在中的对象的语法数据变量没有更长的会话引用。
没有头痛的认证
身份验证过去意味着编写大量样板代码。现在不再是了,控件包括了两个现成的授权码:
- TWebBasicAuthenticator对于标准HTTP基本身份验证
- TWebFormsAuthenticator对于基于自定义HTML表单的登录流
TWebFormsAuthenticator特别丝滑,它为您处理整个登录流程。只要设置你的LoginURL, 失败URL,以及HomeURL 属性,它会自动将未经身份验证的用户重定向到您的登录页面,处理POST凭据,并使用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;
基于角色的授权
安全性不仅仅是知道你的用户是谁;这也是关于控制他们能做什么。新的TWebAuthorizer组件通过授权区域提供灵活的基于角色的访问控制。您可以使用URL模式保护应用程序的整个部分,并指定哪些用户角色可以访问。您可以使用URL模式保护应用程序的整个部分,如/admin*并使用简单的逗号分隔列表指定哪些用户角色可以访问。
授权级别为您提供了精细的控制:zkFree对于匿名访问,zkProtected仅适用于经过验证的用户,或者zknignore完全跳过处理。失败的授权会自动重定向到您的未授权URL或者返回403状态(如果用户已经过身份验证)。
在WebStencils模板中,您现在可以直接在模板中基于用户角色显示或隐藏内容,例如,@session.UserHasRole(‘admin’)。这意味着您可以根据用户权限显示或隐藏模板的整个部分。
结束语
新的功能增强在RAD Studio 13软件的预发布版本中。正式版本的发布估计要等到9月份,非常值得期待。
粉丝们,是不是也很期待???!!!