.net cache用法,单点登陆
来源:互联网 发布:淘宝客代购推广 编辑:程序博客网 时间:2024/05/09 19:23
关键字: asp.net cache 用法 单点 登陆 同一时间 同一用户 只能 登陆一个 不允许 重复登陆 窗体验证
先cache用法:
一个用户只能在一个地方登录,就是单点登录。
在ASP.NET中实现单点登录很简单,可是退出和非正常退出后就登陆不上去了,这是个缺点,不知道如何解决,先把cache用法放着,后边我有自己的单点登陆解决办法
把用户的登录信息保存在Cache中,设置过期时间为Session失效的时间,一旦Session失效,Cache也过期
下边的是我自己对单点登陆的解决办法,但肯定还有不尽人意的地方,如果你发现了,看到了,敬请留言,以待改进
web.Config下的<system.web>标签下先设置窗体验证
后台代码:
重点就是在那两个session的判断上
黑色头发:http://heisetoufa.javaeye.com/
一个用户只能在一个地方登录,就是单点登录。
在ASP.NET中实现单点登录很简单,可是退出和非正常退出后就登陆不上去了,这是个缺点,不知道如何解决,先把cache用法放着,后边我有自己的单点登陆解决办法
把用户的登录信息保存在Cache中,设置过期时间为Session失效的时间,一旦Session失效,Cache也过期
C#代码
- 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();//这段主要是为了避免不必要的错误导致不能登录
- }
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();//这段主要是为了避免不必要的错误导致不能登录}
下边的是我自己对单点登陆的解决办法,但肯定还有不尽人意的地方,如果你发现了,看到了,敬请留言,以待改进
web.Config下的<system.web>标签下先设置窗体验证
Xml代码
- <authentication mode="Forms">//mode值是Forms为定义成窗体验证
- <forms loginUrl="public/Login.aspx" name=".ASPXAUTH">//用户未登陆就先访问public/Login.aspx页面
- </forms>
- </authentication>
- <authorization>
- <deny users="?"/>
- </authorization>
<authentication mode="Forms">//mode值是Forms为定义成窗体验证<forms loginUrl="public/Login.aspx" name=".ASPXAUTH">//用户未登陆就先访问public/Login.aspx页面</forms></authentication><authorization><deny users="?"/></authorization>
后台代码:
C#代码
- protected void login_btnUserLogin_Click(object sender, EventArgs e)
- {
- Model.userInfo.User modelUserLogin = new Model.userInfo.User();
- modelUserLogin.UserName = login_txtUserName.Text.Trim();//把用户名存储到Model
- modelUserLogin.Pwd = login_txtUserPwd.Text.Trim();//把用户密码存储到Model
- BLL.userInfo.User bllUserLogin = new BLL.userInfo.User();
- string[] session_str = new string[2];
- session_str = bllUserLogin.get_loginZT(modelUserLogin.UserName, modelUserLogin.Pwd);//调用后台sql语句判断是否登陆成功,不成功返回null
- if (session_str[0] != null)//判断登陆是否成功
- {
- if (Session["sessionUserName"] == null || Session["sessionUserName"] == string.Empty)//判断sessionUserName的session是否为null,为null说明这个用户当前没有登陆,可以正常登陆
- {
- Session["sessionUserName"] = modelUserLogin.UserName;
- Session["sessionGLBM"] = session_str[1];
- Response.Write("<script language:javascript>javascript:window.alert('登陆成功!');</script>");
- FormsAuthentication.RedirectFromLoginPage(modelUserLogin.UserName, false);
- this.Response.Redirect("../private/index/MenuIndex.aspx");
- }
- if (Session["sessionUserName"].ToString().Equals(login_txtUserName.Text.Trim()))//判断sessionUserName的session的值是否与前台输入的用户名是否相同,如果相同,则说明这个用户当前正在登陆,弹出警告不允许登陆
- {
- Response.Write("<script language:javascript>javascript:window.alert('用户已登陆!');</script>");
- return;
- }
- }
- else
- {
- Response.Write("<script language:javascript>javascript:window.alert('用户名或密码错误!');</script>");
- }
- }
protected void login_btnUserLogin_Click(object sender, EventArgs e){Model.userInfo.User modelUserLogin = new Model.userInfo.User();modelUserLogin.UserName = login_txtUserName.Text.Trim();//把用户名存储到ModelmodelUserLogin.Pwd = login_txtUserPwd.Text.Trim();//把用户密码存储到ModelBLL.userInfo.User bllUserLogin = new BLL.userInfo.User();string[] session_str = new string[2];session_str = bllUserLogin.get_loginZT(modelUserLogin.UserName, modelUserLogin.Pwd);//调用后台sql语句判断是否登陆成功,不成功返回nullif (session_str[0] != null)//判断登陆是否成功{if (Session["sessionUserName"] == null || Session["sessionUserName"] == string.Empty)//判断sessionUserName的session是否为null,为null说明这个用户当前没有登陆,可以正常登陆{Session["sessionUserName"] = modelUserLogin.UserName;Session["sessionGLBM"] = session_str[1];Response.Write("<script language:javascript>javascript:window.alert('登陆成功!');</script>");FormsAuthentication.RedirectFromLoginPage(modelUserLogin.UserName, false);this.Response.Redirect("../private/index/MenuIndex.aspx");}if (Session["sessionUserName"].ToString().Equals(login_txtUserName.Text.Trim()))//判断sessionUserName的session的值是否与前台输入的用户名是否相同,如果相同,则说明这个用户当前正在登陆,弹出警告不允许登陆{Response.Write("<script language:javascript>javascript:window.alert('用户已登陆!');</script>");return;}}else{Response.Write("<script language:javascript>javascript:window.alert('用户名或密码错误!');</script>");}}
重点就是在那两个session的判断上
黑色头发:http://heisetoufa.javaeye.com/
- .net cache用法,单点登陆
- cache单点登陆应用
- .net SSO单点登陆
- .net SSO单点登陆
- 单点登陆.NET的实现
- asp.net 1.1单点登陆
- .net Cache使用用法
- NET Cache的用法
- 单点登陆.NET的简单实现
- 单点登陆.NET的简单实现 (转)
- Asp.net 同一用户名不能同时登陆(单点登陆)
- asp.net Cache的用法
- .net中Cache的用法
- NET中Cache用法分析
- .NET中Cache用法分析
- 单点登陆
- 单点登陆
- 单点登陆
- CSS+JS控制图片展示效果
- DIV+CSS实现放大镜效果的分页样式
- JS+DIV表单实例——鼠标移上背景变色和文字提示
- CSS背景色的半透明设置 opacity 透明度
- 使用Forms Authentication实现用户注册、登录
- .net cache用法,单点登陆
- Windows 下逐状态启动 Oracle数据库
- oralce 基础知识
- 学习SQL查询语句 基于Oracle默认的表
- Oracle数据库命令集
- Oracle数据库常用的操作命令
- Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍
- js正则判断电话/手机/邮箱/身份证
- JS创建类和对象