com+事务安全机制怎么启动问题? 急!(100分)

  • 主题发起人 主题发起人 飞扬人生
  • 开始时间 开始时间

飞扬人生

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在开发com+应用时,利用其安全机制进行用户认证.
服务端程序 mts模块
Tclogin = class(TMtsAutoObject, Iclogin)
procedure Tclogin.Login(var role: OleVariant);
begin
//怎么启动安全机制?????
role:='非法或安全机制未启动';
if issecurityenabled then
begin
if iscallerinrole('manager') then
role:='manager';
if ObjectContext.iscallerinrole('user') then
role:='user';
end;
setcomplete;
end;

客户端调用
machname:='xyg';
login:=coclogin.CreateRemote(machname);
login.Login(vuser);
user:=vuser;
showmessage(user);
本人以manager角色登陆
调用时user里的内容一直都是'非法或安全机制未启动',
说明objectcontext没有启动安全机制
请问高手该如何解决????????
 
这个问题真的那么难吗?
没有一个人可以回答?
我本来还有很多现实问题
跟大家讨论看来是没有必要了...!
 
你可以查阅李维的《分布式系统。。。》的第三本,转讲ADO/MTS/COM+。
 
如果你用的是dcom的话,可能是设置不对
 
我的例子就跟李维的例子相似。他讲没讲清楚,按他的方法就是出现我调试的问题
我使用的是ado+mts/com+
 
要想正确使用COM+提供的安全性,必须在Component Service中正确的设置,
包含以下步骤:
(1)在应用程序的属性/安全设置/授权中选中"强制对应用程序进行访问检查"
(2)在应用程序的属性/安全设置/安全级中选中"对进程级和组件级运行访问检查"
(3)在组件的属性/安全设置/授权中选中"强制组件级访问检查"
(4)在应用程序中加入适当的角色
(5)在组件的属性/安全设置中选中允许访问的角色
这五步缺一不可,且其中有(2)就必须有(5)。另要注意时常关闭前一次的应用服务程序
 
to coder:
所有该做得我都作了,结果还是不行。
我在代码中加上
if getobjectcontext=nil then
role:='为启动'
结果测试结果role值一直都是'为启动'.
真是不知道什么原因!
 
看来如果照你所说,是该注意的地方都注意了,那么
1。把你的Delphi和ADO升级到最新的pack.
2。按李维第三本秘籍中说的,修改编译ComObj,Provider单元。
 
to 飞扬人生:
我按照你的做法,写了一个测试,结果是安全机制的确有效。
你检查一下是不是改了默认身份验证级和默认模拟级。
如果执行客户端的用户不属于定义好的角色,将出现“拒绝访问”。

by the way:
在应用级-标识我使用的是交互式用户(便于测试)
我用的是活动目录来管理用户的。
 
to coder
我跟你唯一不同的就是我不是采用域模式网络,而且
getobjectcontext返回的一直都是nil,不知兄台能不
能得到objectcontext啊?
 
后退
顶部