首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

在ASP.NET中怎么实现单点登录

2012-04-15 
在ASP.NET中如何实现单点登录在ASP.NET中如何实现单点登录!!!!在线等..[解决办法]http://www.asjob.com/sb

在ASP.NET中如何实现单点登录
在ASP.NET中如何实现单点登录!!!!在线等..

[解决办法]
http://www.asjob.com/sb/2008-6-24/37507.htmlhttp://www.cnblogs.com/luck0235/articles/1508181.html
[解决办法]
你看看对你有帮助吗?http://www.cnblogs.com/luck0235/articles/1508181.html
[解决办法]
用户表里加个在线标识,登录了就改变,并记录IP,这样在别的IP登录,并且登录标识为已登录就进行相应处理。 如何记录退出是有点问题的,只能说很难非常精确。
[解决办法]
http://www.cnblogs.com/luck0235/articles/1508181.html
[解决办法]
http://dev.csdn.net/article/61403.shtm
[解决办法]
http://www.haoxiai.net/wangzhanzhizuo/aspnet/54298.html
http://www.mscto.com/dotnet/2009011561524.html
[解决办法]

 帮顶!学习!!!!!!!!
[解决办法]
<script>
//发送单点登录请求
function SsoLogin(Url, Args, callBack)
{
var element;
var head = document.getElementsByTagName("head")[0];
element = document.createElement("script");
element.src = Url + "?" + Args + "&" + Math.random();
element.type = "text/javascript";
element.id = 'sso';
head.appendChild(element);
if (callBack != undefined)
{
if (document.all)
{
element.onreadystatechange = function()
{
if (element.readyState == "loaded" || element.readyState == "complete")
{
eval(callBack);
return;
}
}
}
else
{
element.onload = function()
{
eval(callBack);
}
}
}
}
</script>
在url接收方收到请求,进行验证,创建本地用户cookie。还可以加个票据
[解决办法]
单点登录(Single Sign On)简称SSO,是目前比较流行的企业业务整合的解决方案之一。在开发企业门户网站或电子商务系统时,设计一个用户只能在同一网站进行惟一登录的功能。

Cache对象主要用于Web应用程序的缓存。对于每个应用程序都需要创建Cache对象的一个实例,并且只要对应的应用程序域保持活动,该实例便保持有效,有关Cache对象实例的所有信息都须通过HttpContext对象的Cache属性或Page对象的Cache属性来提供。

本实例中,把用户的登录信息保存在Cache对象中,并设置过期时间为Session变量失效的时间,因此,一旦Session变量失效,Cache对象也就过期了;但Cache对象对所有的用户还可以访问,因此,用它保存用户信息比数据库来得方便。

实现关键代码如下:

 

protected void btnLogin_Click(object sender, EventArgs e)
{
int i = this.checkLogin(txtName.Text,txtPwd.Text);
if (i> 0)
{
string str_Key = txtName.Text + "_" + txtPwd.Text;
// 得到Cache中的给定str_Key的值
string str_User = Convert.ToString(Cache[str_Key]);
// Cache中如果没有str_Key的项目,那么用户没有登录
if (str_User == String.Empty)
{
// TimeSpan构造函数,用来判断是否登录。
TimeSpan SessTimeOut = new TimeSpan(0,0,HttpContext.Current.Session.Timeout,0,0); HttpContext.Current.Cache.Insert(str_Key,str_Key,null,DateTime.MaxValue,SessTimeOut, CacheItemPriority.NotRemovable,null);
Session["User"] = str_Key;
// 首次登录成功
Response.Write("<h2 style='color:red'>你好,登录成功!");
}
else
{


// 在 Cache 中存在该用户的记录,表名已经登录过,禁止再次登录
Response.Write("<h2 style='color:red'>抱歉,您好像已经登录了!");
return;
}
}
else
{
Response.Write("用户名称或密码错误!!!");
}


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

[解决办法]
SingleLogin.aspx代码

&lt;%@ Page language=&quot;c#&quot; Codebehind=&quot;SingleLogin.aspx.cs&quot; AutoEventWireup=&quot;false&quot;
 Inherits=&quot;eMeng.Exam.SingleLogin&quot; %&gt;
&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot; &gt;
&lt;HTML&gt;
&lt;HEAD&gt;
&lt;title&gt;单点登录测试&lt;/title&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=gb2312&quot;&gt;
&lt;meta http-equiv=&quot;Author&quot; content=&quot;孟子E章&quot;&gt;
&lt;meta http-equiv=&quot;WebSite&quot; content=&quot;http://dotnet.aspx.cc/&quot;&gt;
&lt;style&gt;
H3 { FONT: 17px 宋体 }
INPUT { FONT: 12px 宋体 }
SPAN { FONT: 12px 宋体 }
P { FONT: 12px 宋体 }
H4 { FONT: 12px 宋体 }
&lt;/style&gt;
&lt;/HEAD&gt;
&lt;body MS_POSITIONING=&quot;GridLayout&quot;&gt;
&lt;form id=&quot;Form1&quot; method=&quot;post&quot; runat=&quot;server&quot;&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;h3&gt;单点登录测试&lt;/h3&gt;
&lt;p&gt;用户名称:&lt;asp:TextBox id=&quot;UserName&quot; runat=&quot;server&quot;&gt;&lt;/asp:TextBox&gt;&lt;/p&gt;
&lt;p&gt;用户密码:&lt;asp:TextBox id=&quot;PassWord&quot; runat=&quot;server&quot; TextMode=&quot;Password&quot;&gt;&lt;/asp:TextBox&gt;&lt;/p&gt;
&lt;p&gt;&lt;asp:Button id=&quot;Login&quot; runat=&quot;server&quot; Text=&quot; 登 录 &quot;&gt;&lt;/asp:Button&gt;&lt;/p&gt;
&lt;p&gt;&lt;asp:Label id=&quot;Msg&quot; runat=&quot;server&quot;&gt;&lt;/asp:Label&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/form&gt;
&lt;/body&gt;
&lt;/HTML&gt;

SingleLogin.aspx.cs代码

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace eMeng.Exam
{
/// &lt;summary&gt;
/// SingleLogin 的摘要说明。
/// 实现单点登录
/// &lt;/summary&gt;
public class SingleLogin : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox UserName;
protected System.Web.UI.WebControls.TextBox PassWord;
protected System.Web.UI.WebControls.Label Msg;
protected System.Web.UI.WebControls.Button Login;

private void Page_Load(object sender, System.EventArgs e)
{
// 实际例子可访问:
// http://dotnet.aspx.cc/Exam/SingleLogin.aspx
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}

/// &lt;summary&gt;
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// &lt;/summary&gt;
private void InitializeComponent()
{
this.Login.Click += new System.EventHandler(this.Login_Click);


this.Load += new System.EventHandler(this.Page_Load);
}
#endregion

private void Login_Click(object sender, System.EventArgs e)
{
// 作为唯一标识的Key,应该是唯一的,这可根据需要自己设定规则。
// 做为测试,这里用用户名和密码的组合来做标识;也不进行其它的错误检查。

// 生成Key
string sKey = UserName.Text + &quot;_&quot; + PassWord.Text;
// 得到Cache中的给定Key的值
string sUser = Convert.ToString(Cache[sKey]);
// 检查是否存在
if (sUser == null || sUser == String.Empty)
{
// Cache中没有该Key的项目,表名用户没有登录,或者已经登录超时
// 注意下面使用的TimeSpan构造函数重载版本的方法,是进行是否登录判断的关键。
TimeSpan SessTimeOut = new TimeSpan(0,0,System.Web.HttpContext.Current.Session.Timeout,0,0);
HttpContext.Current.Cache.Insert(sKey,sKey,null,DateTime.MaxValue,SessTimeOut,
System.Web.Caching.CacheItemPriority.NotRemovable,null);
Session[&quot;User&quot;] = sKey;
// 首次登录,您可以做您想做的工作了。
Msg.Text=&quot;&lt;h4 style='color:red'&gt;嗨!欢迎您访问&lt;a href='http://dotnet.aspx.cc/'&gt;【我的例子】&quot;;
Msg.Text += &quot;&lt;/a&gt;,完成!:)&lt;/h4&gt;&quot;;
}
else
{
// 在 Cache 中发现该用户的记录,表名已经登录过,禁止再次登录
Msg.Text=&quot;&lt;h4 style='color:red'&gt;抱歉,您好像已经登录了呀:-(&lt;/h4&gt;&quot;;
return;
}
}
}
}

[解决办法]
学习下了。。

热点排行