思路:

1、检查登录:

private string CheckLogin(HttpContext context)
{
Model.TUser model = (Model.TUser)context.Session["USERModel"];
if (model == null)
{
return "{\"msg\": \"0\", \"msgbox\": \"当前为退出\"}";
}
else
{
return "{\"msg\": \"1\", \"msgbox\": \"当前为登录\"}";
}
}

2、点击登录:

private string Login(HttpContext context)
{
BLL.TUser _blluser = new BLL.TUser();
string loginname = context.Request.Params["loginname"];
string password = context.Request.Params["password"];
string issave = context.Request.Params["issave"];//是否保存密码 Model.TUser model_user = _blluser.GetModel("UserLogin='" + loginname + "'"); bool isSuccess = false;
string cookiesPassword = "";
//判断 Cookies 是否存在
if (HttpContext.Current.Request.Cookies["password"] != null)
{
cookiesPassword = HttpContext.Current.Request.Cookies["password"].Value;
if (password == cookiesPassword) /// 输入 和 Cookies 密码 一样
{
//登录成功
isSuccess = true;
}
} //判断输入的密码和数据库的是否匹配
if (!isSuccess)
{
if (password == model_user.PassWord)
{
//登录成功
isSuccess = true;
}
else
{
//登录失败
isSuccess = false;
}
} if (isSuccess)
{
context.Session["USERModel"] = model_user;
}
else
{
//登录失败 密码不对
return "{\"msg\": \"0\", \"msgbox\": \"密码错误\"}";
} //要保存,则写入cookie
if (issave == "true")
{
HttpCookie cookieLogin = new HttpCookie("loginname");
cookieLogin.Expires = DateTime.Now.AddDays(10);
cookieLogin.Value = model_user.UserLogin;
HttpContext.Current.Response.Cookies.Add(cookieLogin); HttpCookie cookiePassword = new HttpCookie("password");
cookiePassword.Expires = DateTime.Now.AddDays(10);
cookiePassword.Value = password;
HttpContext.Current.Response.Cookies.Add(cookiePassword);
}
else
{//设置cookie过期,删除cookie
HttpCookie cookieLogin = new HttpCookie("loginname");
cookieLogin.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(cookieLogin); HttpCookie cookiePassword = new HttpCookie("password");
cookiePassword.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(cookiePassword);
} return "{\"msg\": \"1\", \"msgbox\": \"登录成功\"}";
}

3、页面刷新时获取用户保存的账户名和密码并免登陆

private string IsSaveUserLogin(HttpContext context)
{
///判断 Cookies 是否存在
if (HttpContext.Current.Request.Cookies["loginname"] == null || HttpContext.Current.Request.Cookies["password"] == null)
{
return "{\"msg\":-1, \"msgbox\": \"帐号没保存\", \"loginname\": \"\", \"password\": \"\"}";
}
else
{
string loginname = HttpContext.Current.Request.Cookies["loginname"].Value;
string password = HttpContext.Current.Request.Cookies["password"].Value;
//免登陆
CookieLogin(context, loginname, password);
return "{\"msg\":1, \"msgbox\": \"帐号保存过\", \"loginname\": \"" + loginname + "\", \"password\": \"" + password + "\"}";
}
} private void CookieLogin(HttpContext context, string cookiesLoginname, string cookiesPassword)
{
Model.TUser model_user = new Model.TUser();
BLL.TUser _blluser = new BLL.TUser();
bool isSuccess = false;
///判断 Cookies 是否存在
if (!string.IsNullOrEmpty(cookiesLoginname) && !string.IsNullOrEmpty(cookiesPassword))
{
model_user = _blluser.GetModel("UserLogin='" + cookiesLoginname + "'");
if (model_user.PassWord == cookiesPassword) /// 数据库 和 Cookies密码 一样
{
//登录成功
isSuccess = true;
}
} if (isSuccess)
{
//登录成功
context.Session["USERModel"] = model_user;
}
else
{
//登录失败 密码不对
//return "{\"msg\": \"0\", \"msgbox\": \"密码错误\"}";
}
}

4、用户退出-清除cookie和session

private string UserExit(HttpContext context)
{
//清除cookie
//HttpContext.Current.Request.Cookies.Clear();//无效
HttpCookie cookieLogin = new HttpCookie("loginname");
cookieLogin.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(cookieLogin); HttpCookie cookiePassword = new HttpCookie("password");
cookiePassword.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(cookiePassword); context.Session["USERModel"] = null;
context.Session.Clear();
return "";
}

.net登录的一般模式的更多相关文章

  1. Linux开机自动登录(文本模式)

    • Linux系统启动登录过程 以RedHat/CentOS为例,Linux系统Level3模式下从启动到登录的整个过程大致如下: 1> 加载BIOS信息:包含了CPU/显卡/内存/硬盘/网卡等 ...

  2. linux重启后进入了救援模式,无法远程登录

    卸载删除了某个文件系统分区的逻辑卷,但是没有修改fstab文件,导致系统重启异常,此时已经无法远程连接了,只能本地登录到救援模式修改

  3. Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战

    一. 前言 [APP 移动端]Spring Security OAuth2 手机短信验证码模式 [微信小程序]Spring Security OAuth2 微信授权模式 [管理系统]Spring Se ...

  4. 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销

    第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...

  5. C/S架构程序多种类服务器之间实现单点登录(转)

    (一) 在项目开发的过程中,经常会出现这样的情况:我们的产品包括很多,以QQ举例,如登陆.好友下载.群下载.网络硬盘.QQ游戏.QQ音乐等,总不能要求用户每次输入用户名.密码吧,为解决这个问题,高手提 ...

  6. 设计模式17---设计模式之模板方法模式(Template Method)(行为型)

    1.场景模拟 使用软件模拟登录控制,普通用户和工作人员用户,工作人员的密码在数据库中是加密的. 步骤大致如下: 前台提交,后台获取登录信息,同数据库中的登陆信息进行比较,只不过工作人员是加密的,普通用 ...

  7. php设计模式(二):结构模式

    上一篇我们介绍了设计模式的特性并且详细讲解了4种创建型模式,创建型模式是负责如何产生对象实例的,现在我们继续来给大家介绍结构型模式. 一.什么是结构型模式? 结构型模式是解析类和对象的内部结构和外部组 ...

  8. 朱晔和你聊Spring系列S1E10:强大且复杂的Spring Security(含OAuth2三角色+三模式完整例子)

    Spring Security功能多,组件抽象程度高,配置方式多样,导致了Spring Security强大且复杂的特性.Spring Security的学习成本几乎是Spring家族中最高的,Spr ...

  9. Oracle 不小心删除undo数据文件以及磁盘空间不足导致不能登录的解决办法

    在一次测试中,由于导入的数据量过大导致事务一直提交失败因为磁盘空间不够用了,一检查发现是undo表空间不够用,于是重新创建了一个表空间,准备把之前的undo表空间删除,删除时却发现一直删不掉,因为它一 ...

随机推荐

  1. 简单的jQuery幻灯片实现

    一.一些抱怨 自从国庆放假上班以来,又是忙碌的工作直到现在,但是说忙好像也没有加几天班,只是上班的时候工作排的挺满.但是别人貌似一直都不太忙(也是我自己觉得),感觉就很不爽. 我喜欢快速做完一件事,然 ...

  2. 使用jQuery.form插件,实现完美的表单异步提交

    传送门:异步编程系列目录…… 时间真快,转眼一个月快结束了,一个月没写博客了!手开始生了,怎么开始呢…… 示例下载:使用jQuery.form插件,实现完美的表单异步提交.rar 月份的尾巴,今天的主 ...

  3. js模块化历程

    这是一篇关于js模块化历程的长长的流水账,记录js模块化思想的诞生与变迁,展望ES6模块化标准的未来.经历过这段历史的人或许会感到沧桑,没经历过的人也应该知道这段历史. 无模块时代 在ajax还未提出 ...

  4. 在C#代码中应用Log4Net(一)简单使用Log4Net

    首先让我们先把Log4Net跑起来,示例代码在文章最后面可以下载 1.先把Log4Net引入到工程中,为了演示方便,我们先建立一个winform程序.在程序的根目录下面,建立一个Libs文件夹,以便存 ...

  5. Win7&Ubuntu12.04 双系统引导问题

    周末的时候手贱,重装系统,导致原来的ubuntu12.04和win7双系统的引导不见了,所以在此进行一下说明,如何修复. 1. win7和ubuntu12.04双系统引导修复 问题描述:    在重装 ...

  6. 微信为什么发布 Mac 版?

    因为 Mac 就是好啊就是好啊,就是好…… 打完收工,谢谢,鼓掌 piapiapia……晚安! 这么写在京城行走会不会挨板砖呢?头像已经印到书上满世界的发出去了,虽然考虑到行走江湖求一个稳字,我还特意 ...

  7. CWR Mobile简介

    原创地址:http://www.cnblogs.com/jfzhu/p/4266671.html 转载请注明出处 (一)CWR公司背景 Dynamics CRM除了自己Out of Box对移动设备的 ...

  8. Hadoop学习路线图

    Hadoop家族产品,常用的项目包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,新增加的项目包括, ...

  9. 2013 duilib入门简明教程 -- XML配置界面(6)

        前面那些教程都是为了让小伙伴们从win32.MFC过渡到duilib,让大家觉得duilib不是那么陌生,如果大家现在还对duilib非常陌生的话,那就说明前面的教程做得不好,请大家在下面留言 ...

  10. Attribute富文本使用方法

    ★★★Attribut富文本★★★ 在UITextView和UILable的使用中很多的时候会用到富文本. UITextView和UILable的区别在于: ★★★★UITextView 当文字大于一 ...