DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: 123glimmer
今日帖子: 19
在线用户: 10
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 janker (janker) ★☆☆☆☆ -
盒子活跃会员
2021/4/3 1:05:16
标题:
请教一个问题,关于权限设计 浏览:355
加入我的收藏
楼主: 一个小项目,原来是D7做的2层PC应用,数据库里有一个权限管理表,所以权限完全是由自己的代码控制(根据数据库的权限表)。
现在客户要升级,手机也能用。准备用DataSnap/Restful重写(其它服务端也不会),10.3..3版本。
关于TDSAuthenticationManager患迷糊了,下面这样做可以吗?
模块创建时(TServerContainer1。Create()),把权限表里的Role权限规则装载到TDSAuthenticationManager.Roles,然后OnUserAuthenticate里可以默认True,因为匿名用户要连接进行注册。还要判断登录的用户,查询权限表属于哪个Role,参数UserRoles中。这样,OnUserAuthorize就不用判断了?
网上没找到怎么结合数据库的权限表和TDSAuthenticationManager的例子,(例子的权限都是硬编码的,或者是用TAuthRole 来写死的)
有经验的大侠们请指导,谢谢了........
----------------------------------------------
-
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
2021/4/4 1:11:37
1楼: 用 D7 写个 WebService,封装几个接口函数给手机调用不就完了吗。
原有 D7 程序不用作任何改动。
为什么要重写?
----------------------------------------------
武汉天气不好
作者:
男 janker (janker) ★☆☆☆☆ -
盒子活跃会员
2021/4/4 12:58:03
2楼: dbyoung (dbyoung)
多年没用过D7了,关键是原来是2层的,所有业务都在客户端里,想把业务功能放在中间层上,以后升级什么的也方便。小项目,业务功能也不多。
经过几天摸索测试,基本的认证授权可以实现了,
TDSAuthenticationManager.OnUserAuthorize

  valid := True;

  if EventObject.DeniedRoles <> nil then
  begin
    for LUserRole in EventObject.UserRoles do
    begin
      if EventObject.DeniedRoles.IndexOf(LUserRole) >= 0 then
        valid := False;
    end;
  end;

没有权限的过滤掉。。。
----------------------------------------------
-
作者:
男 janker (janker) ★☆☆☆☆ -
盒子活跃会员
2021/4/4 13:38:16
3楼: 这里有个不明白的地方,不知道怎么处理:
一般所有的和数据库关联的业务方法什么的都放在了ServerMethodsUnit单元处理,
但是在TServerContainer1里好像没办法引用TServerMethods1的方法。
TServerMethods1 倒是可以引用TServerContainer1的方法,因为TServerContainer1有一个实例变量FModule,但是向导生成的没有一个TServerMethods1 的实例变量....
这样,如果TServerContainer1想要连接数据库,要另外一个TFDConnection和相关的query等?

是不是可以这样理解:TServerMethods1是专供客户端用的,Server端自己用的连接数据库的处理,要另外自己创建?
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2021/4/6 21:09:31
4楼: 你的这个问题牵涉到 DataSnap 的架构的理解问题。
----------------------------------------------
-
作者:
男 janker (janker) ★☆☆☆☆ -
盒子活跃会员
2021/4/7 9:13:43
5楼: 回头查找了一个XE7的代码,那时候有TServerMethods1的实例变量...
不管了,另外弄个TDataModual,把数据库的业务全部放这,然后TServerContainer1和
TServerMethods1都引用它
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行7.8125毫秒 RSS