以前做的系统中都是针对某一个功能项来设计的权限,一个功能项比如说 就对应了一个窗体。直接让功能项不可用或不可显示就行.
现在功能项的窗体上的工具栏中的功能(添加,修改,删除,审核,打印,导出)等功能,也需要做上权限,大家都是怎么处理的. 也就是即使窗体显示了,但不同的用户的权限不一样,哪些工具栏按钮就可用或者不可用。
现在功能项的窗体上的工具栏中的功能(添加,修改,删除,审核,打印,导出)等功能,也需要做上权限,大家都是怎么处理的. 也就是即使窗体显示了,但不同的用户的权限不一样,哪些工具栏按钮就可用或者不可用。
1.角色表
2.权限表
3.角色权限中间表
在进行登陆或FormShow事件时,要根据当前用户的角色对角色权限中间表进行过滤,获取有权限的Action,并根据在权限表中记录的权限名称与相关控件名通过RTTI进行对控件的操作(一般默认所有控件Enable=False,有权限的可将其设置为True)
procedure TMainFrm.MainAppEventsActionExecute(Action: TBasicAction;
var Handled: Boolean);//权限控制
begin
if (AppMainOp.GetAllRightID.IndexOf(IntToStr(Action.Tag)) = -1) //GetAllRightID得到用户所有权限编号列表
and (Action.Tag <> 0)
then
begin
MessageBox(Application.Handle,'对不起,您无权进行此操作!',
APP_Name,MB_OK + MB_ICONEXCLAMATION);
Handled := True;
MainAppEvents.CancelDispatch;//停止分发这个Action到其他的Action Handler
end;
end;