Delphi XE数据快照TCP/IP客户端登录表单

Delphi XE数据快照TCP/IP客户端登录表单,delphi,delphi-xe,datasnap,Delphi,Delphi Xe,Datasnap,(我看到了Demo Dirt,但它用于HTTP Web,我不知道如何将其切换到TCP/IP) 我是Delphi新手-我需要有关使用DataSnap和客户端登录表单(从SQL Server检查用户密码)的帮助,然后应用角色。任何代码或答案将不胜感激 提前感谢如果您能更清楚地解释一下您想做什么,以及目前哪些不起作用,我很乐意为您提供帮助。(您正试图用应用程序完成什么,到目前为止您有什么身份验证,以及您到底在坚持什么。) 如果你想从头开始,你应该这样做: 使用“DataSnap服务器”向导创建新的服

(我看到了Demo Dirt,但它用于HTTP Web,我不知道如何将其切换到TCP/IP) 我是Delphi新手-我需要有关使用DataSnap和客户端登录表单(从SQL Server检查用户密码)的帮助,然后应用角色。任何代码或答案将不胜感激
提前感谢

如果您能更清楚地解释一下您想做什么,以及目前哪些不起作用,我很乐意为您提供帮助。(您正试图用应用程序完成什么,到目前为止您有什么身份验证,以及您到底在坚持什么。)

如果你想从头开始,你应该这样做:

  • 使用“DataSnap服务器”向导创建新的服务器项目。这将使用Indy(而不是WebBroker),并允许TCP/IP连接。(即使是重量级回调。)

  • 在向导中设置属性时,请确保选中“身份验证”选项(“授权”不是必需的。仅当您需要更复杂的身份验证/授权机制时。)

  • 打开向导生成的ServerModule单元,然后切换到“代码”选项卡

  • 查找“DSAuthenticationManager1UserAuthenticate”函数(如果在向导中选中了身份验证,则会自动添加此函数。)

  • 在此函数中,执行身份验证。。。您可以访问用户名(“用户”)和密码(“密码”)。连接到数据库,查看是否有匹配的用户,以及该用户具有哪些角色。然后,用用户拥有的所有角色填充传递到此方法的UserRoles集合

  • 在用户上指定角色后,这些角色将不会执行任何操作,直到您的服务器方法也允许或拒绝为其分配角色。您可以在设计时在对象检查器的TDSAuthenticationManager组件中执行此操作。(服务器模块形式)。您可以修改角色集合

  • 或者,您可以在代码中将属性添加到服务器方法中。你可以举个例子:

    [TRoleAuth('admin')]
    function EchoString(String: Value): String;
    
这意味着EchoString只能由具有“admin”角色的用户调用

或者这个:

[TRoleAuth('', 'admin')]
function EchoString(String: Value): String;
[TRoleAuth('admin,guest,visitor')]
function EchoString(String: Value): String;
这意味着除了具有“admin”角色的用户之外,任何人都可以调用EchoString

或者这个:

[TRoleAuth('', 'admin')]
function EchoString(String: Value): String;
[TRoleAuth('admin,guest,visitor')]
function EchoString(String: Value): String;
这意味着任何以“admin”、“guest”或“visitor”作为角色之一(或任意组合)的用户都可以调用EchoString

注意:要使用TRoleAuth属性,需要将DSAuth单元添加到uses子句中,否则将忽略角色属性

在客户端上,添加TSQLConnection组件。将驱动程序设置为“Datasnap”,然后展开它。设置主机和端口值。请参阅此处有关设置的详细信息:

此外,我之前在我的博客上发布了关于身份验证的内容:

我希望这有帮助

垫子