从BS到CS的单点登录
怎么样从BS将登录的用户凭证传给CS程序来实现单点登录
[解决办法]
单点登录的原理应该是 cookie的跨域性~~ 主要是解决跨域的问题~~ CS的话 貌似挺难的
[解决办法]
有难度。。
只能用非主流方法也不知道可不可行。
登陆之后用文件传输密码帐号 容易丢失。。。
或者通讯?
[解决办法]
webService或WCF
[解决办法]
你的单点登录是什么意思呢?
是一个用户上线了,另一个人用这个账号登录的时候是不是就提示该用户已经在线呢?还是说直接把登录这个用户挤下去呢?
我这里倒是有一个方法:
思路大概是这样的,就是一个用户登录了,将用户信息写入SESSION 中,然后在数据库中写一个存储过程,让用户的登录时间和系统时间做差,如果时间小于2分钟(并不是就这一次在判断,自从用户登录的时候起,页面其实一直在刷新,也就说,只要用户在线,系统就会一直判断登录时间和系统时间的差值),登录的时候跳转到提示该用户已经在线的页面,请两分钟之后再试
[解决办法]
Create procedure UserIsonLine
(
@OperatorName varchar(10),
@IsOnLine int out
)
as
declare @busy int
declare @State int
begin
set nocount on
begin tran
select @busy = case when abs(datediff(second,LoginTime,getdate()))<120 then 1 else 0 end,
@State = isnull(IsOnline,0)
from t_Operator with(tablockx) where OperatorName=@OperatorName
if (@@error <> 0) goto error1
if (@busy = 1) and (@State = 1)
set @IsOnLine = 1
else
begin
set @IsOnLine = 0
update t_Operator with(tablockx) set LoginTime = getdate(),IsOnLine = 1 where OperatorName=@OperatorName
if (@@error <> 0) goto error1
end
commit tran
set nocount off
return 0
end
error1:
begin
print '出错0001'
set nocount off
rollback tran
end