数据库采用的是三层结构 RDM + Socket能否做到当客户端连接数据库时,由中间层先对客户端提供的用户名与密码做认证。
(这里的用户名与密码不是数据库的用户名与密码,是指我在数据库中的一个表里存放的用户名与密码。)也就是说当客户端连接到中间层时提供用户名与密码,再由中间层向数据库查询用户有什么权限,如果用户的密码错误,就断开连接。如果正确就产生一个Session(这是JSP里的叫法,不知在Delphi的Midas有没有这个功能)请问大家具体上怎样做?那么用友、金碟他们是怎样做用户端的认证?

解决方案 »

  1.   

    在中间层的接口添加一个 Login 方法,客户端调用此方法来进行身份验证。
    SocketConnection.AppServer.Login(UserName,Password)如果中间层进行身份验证失败,则将数据模块 Destroy。
      

  2.   

    请问怎样增加Login方法?
    如何将数据模块 Destroy?
      

  3.   

    在主菜单 View|Type Library 中添加接口方法
    在 RemoteDataModule 中实现此方法function TRemoteDataModule.Login(UserName,Password:string):BOOL;
    begin
      if { UserName and Password is invalid } then
        Self.Free
      else
        IsLogin:=True;
    end;
      

  4.   

    将这个“正确的用户”作为数据库中的适当权限的数据库用户,比如guest,那么这个“正确的用户”所拥有的权限仅限于guest的权限了,在应用服务器作出相应的消息机制,通知客户端不能执行超出自己权限的操作就可以了。