asp.net单点登录

tandi_12 2009-05-08 10:34:01
高分请教:怎么使用asp.net实现单点登录??
(有详细代码的给80%,有实现思路精彩的给10%)
谢谢~
...全文
1375 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
amieangle 2011-06-07
  • 打赏
  • 举报
回复
还好,这个我已解决
amieangle 2011-05-06
  • 打赏
  • 举报
回复
真是一个令人头痛的问题啊!
pudahan 2011-05-05
  • 打赏
  • 举报
回复
实际上cache和session一样也有超时时间的,如果用户不是正常关闭页面,cache还是在服务器上面存在的。造成的结果是人退出了了,还是要等到cache超时后才能登陆。所以此方法不完备!http://blog.sina.com.cn/s/blog_4a9b5fcf0100bdyr.html
这个博客提供了稍微好一点儿,但是比较复杂!
hbxftpwj 2009-11-30
  • 打赏
  • 举报
回复
我看下
arespk 2009-11-18
  • 打赏
  • 举报
回复
http://www.tooki.cn/upload/?fromuid=6
xiaojing7 2009-05-09
  • 打赏
  • 举报
回复
用cache是好办法
huankfy 2009-05-09
  • 打赏
  • 举报
回复
如果是分布式部署,ls的怎么解决的?
记录到cookie不太安全:
1.用户禁用cookie就没办法了
2.加密算法泄密
cat_hsfz 2009-05-09
  • 打赏
  • 举报
回复
这样的问题你搜索一下,网上大把。特别是如果你不介意看英文文章的话,各种解决方案都能找到。自己去CodeProject看看吧。
wojiao_xiaoqiang 2009-05-09
  • 打赏
  • 举报
回复
up
龙宜坡 2009-05-09
  • 打赏
  • 举报
回复
代码估计帖不下!


数据库中建立临时表应该可以解决!
lijie9693 2009-05-09
  • 打赏
  • 举报
回复
学习》。。。
llsen 2009-05-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wolfgroup 的回复:]
楼上的思路不错.用缓存.
我以前有做过一次,但比较麻烦.
bbs.XXX.com
WWW.xxx.com
同一个域名两个站点,然后要求做单点登陆.
我参考了网上的作法,让两个站点对COKIES的加密算法一致,当一个人从A站点登陆后,生成的cookies到了B站点也能被识别出来.当然我不知道楼主要用的场景.如果需要可以联系具体讨论.
[/Quote]

就是判断是否登陆,已经登陆就提醒,没登陆就允许登陆
wgejlpyu 2009-05-09
  • 打赏
  • 举报
回复
学习 俺是新手。可以原谅吧
tandi_12 2009-05-09
  • 打赏
  • 举报
回复
谢谢各位朋友
我的问题还需要补充一点 还要实现跨域登录
sxmonsy 2009-05-09
  • 打赏
  • 举报
回复
接分,,,只要1%
coodd 2009-05-08
  • 打赏
  • 举报
回复
用cache是好办法,也可以把登录情况存在数据库中,更保险不过速度稍慢一点
deepblue2018 2009-05-08
  • 打赏
  • 举报
回复
楼上的思路不错.用缓存.
我以前有做过一次,但比较麻烦.
bbs.XXX.com
WWW.xxx.com
同一个域名两个站点,然后要求做单点登陆.
我参考了网上的作法,让两个站点对COKIES的加密算法一致,当一个人从A站点登陆后,生成的cookies到了B站点也能被识别出来.当然我不知道楼主要用的场景.如果需要可以联系具体讨论.
蓝海D鱼 2009-05-08
  • 打赏
  • 举报
回复
查看文章
ASP.NET单点登录(代码)-转2008-09-02 11:44由于某些原因,在我们的应用中会遇到一个用户只能在一个地方登录的情况,也就是我们通常所说的单点登录。在ASP.NET中实现单点登录其实很简单,下面就把主要的方法和全部代码进行分析。

实现思路

利用Cache的功能,我们把用户的登录信息保存在Cache中,并设置过期时间为Session失效的时间,因此,一旦Session失效,我们的Cache也过期;而Cache对所有的用户都可以访问,因此,用它保存用户信息比数据库来得方便。


代码 string sKey = username.Text.ToString().Trim(); // 得到Cache中的给定Key的值
string sUser = Convert.ToString(Cache[sKey]); // 检查是否存在
if (sUser == null || sUser == String.Empty)
{

TimeSpan SessTimeOut = new TimeSpan(0, 0, System.Web.HttpContext.Current.Session.Timeout, 0, 0);//取得Session的过期时间
HttpContext.Current.Cache.Insert(sKey, sKey, null, DateTime.MaxValue, SessTimeOut, System.Web.Caching.CacheItemPriority.NotRemovable, null);//将值放入cache己方便单点登录
//成功登录
}
else if (Cache[sKey].ToString() == sKey)//如果这个账号已经登录
{
ClientScript.RegisterStartupScript(GetType(), "提示", "<script>alert('对不起,当前用户已经登录');</script>");
return;
}
else
{
Session.Abandon();//这段主要是为了避免不必要的错误导致不能登录
}


62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧