以文本方式查看主题

-  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事件中的,而在这之前,已完成BeforeLoadInnerTableBeforeLoadOuterTable等事件,故根本没有办法利用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
--  
这是没办法的