以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 权限控制的困惑? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=19316) |
-- 作者:涛声依旧5666 -- 发布时间:2012/5/6 10:50:00 -- 权限控制的困惑? 在 项目开发时,想采用自定义的用户权限表,来控制加载不同的外部数据表和不同的字段,但在具体实现中,发生了困惑,主要原因为: 1、打开自定义登录界面,是发生在AfterOpenProject事件中的,而在这之前,已完成BeforeLoadInnerTable、BeforeLoadOuterTable等事件,故根本没有办法利用BeforeLoadOuterTable事件来控制不同DataTable的加载与否,及加载哪些字段。
2、当然我们可以利用BeforeLoadOuterTable事件不加载任何外部数据表,但由于各业务表的业务逻辑代码,必须放到了各业务表的相关事件中,若不加载外部数据表,就不能构造相应的DataTable,更无从放置该DataTable的各种事件代码。
综上所述,本人认为最理想的方法是: 1、1、 利用BeforeOpenProject事件检查是否已有实例运行。(只能运行一个实例) 2、2、利用BeforeConnectOuterDataSource事件检查外部数据源的情况并保证连接正确。 3、3、利用???事件生成登录界面,确定登录用户身份并获得该用户的权限记录。 4、4、利用BeforeLoadOuterTable事件,配合权限加载不同的表,不同的字段,不同的记录。
我 我的困惑就是第3点如何实现?请狐爸和高手们赐教。谢谢!!!!!
[此贴子已经被作者于2012-5-6 10:57:06编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2012/5/6 11:02:00 -- 目前没有办法,自定义用户管理只能控制数据加载,不能空直接结构(也就是加载那些字段)。 也许以后会改进吧。 |
-- 作者:涛声依旧5666 -- 发布时间:2012/5/6 11:17:00 -- 其实狐爸是有办法的,只要在BeforeConnectOuterDataSource和BeforeLoadOuterTable事件之间,再开放一个事件就行(不管叫什么名字)。我只是想让代码能更理想,能更行云流水。 |
-- 作者:涛声依旧5666 -- 发布时间:2012/5/6 12:36:00 -- 经过试验,项目打开时,项目事件执行的次序是: 1、BeforeOpenProject 2、BeforeConnectOuterDataSource 3、BeforeLoadInnerTable 4、BeforeLoadOuterTable 5、Initialize 6、LoadUserSetting 7、AfterOpenProject 若能在1-2事件之间再增加一个可以打开自定义登录界面的事件接口,可能就能解决问题。
狐爸,你看行不?! |
-- 作者:狐狸爸爸 -- 发布时间:2012/5/6 19:18:00 -- 这是没办法的 |