思路:

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. Dropbox创造共享新思维——Datastore API

    7月9日,第一届Dropbox开发者大会上,Dropbox发布了Datastore API的beta版本,通过这个API,原始的结构化数据可以在多个设备间的Dropbox内同步.CEO Drew Ho ...

  2. HTML5- Canvas入门(六)

    已经第六章了,也差不多接近尾声,如果你从第一章耐心follow到本章结束,那你便能掌握canvas的大部分知识点(当然如果要精通,还是得多靠练习,做一些小案例). 今天我们要学习的是canvas的变形 ...

  3. 分享我们项目中基于EF事务机制的架构

    写在前面: 1. 本文中单元测试用到的数据库,在执行测试之前,会被清空,即使用空数据库. 2. 本文中的单元测试都是正确通过的. 要理解EF的事务机制,首先要理解这2个类:TransactionSco ...

  4. [.net 面向对象程序设计进阶] (28) 结束语——告别2015

    [.net 面向对象程序设计进阶] (28) 结束语——告别2015 <.net面向对象程序设计进阶>这一系列文章写了太长的时间了,大概有半年没写,在年底又一口气写了好几篇.在整个过程中目 ...

  5. 备忘-Sql server Timeout expired 超时时间已到. 达到了最大池大小 错误及Max Pool Size设置

    select * from sysprocesses where dbid= db_id('数据库名') 通过此语句可查看目前所有的连接进程 不够了就必须设置Max Pool Size,理论最大值为3 ...

  6. [译]Introducing ASP.NET vNext and MVC 6

    原文:http://www.infoq.com/news/2014/05/ASP.NET-vNext?utm_source=tuicool Part of the ASP.NET vNext init ...

  7. 控制Linux下 mono 服务的启动停止

    当Window下的服务部署到Linux的时候,我们一般用Mono.service 来启动停止.参数比较多,不太好用.于是有个这个Shell脚本. 用法:moa s1 start #启动         ...

  8. [译]如何防止elasticsearch的脑裂问题

    本文翻译自blog.trifork.com的博文 地址是http://blog.trifork.com/2013/10/24/how-to-avoid-the-split-brain-problem- ...

  9. 升级CentOS内核 - 2.6升级到3.10

    *因为学习docker的需要,docker的官方推荐内核使用3.8以上,所以本人决定把CentOS内核升到长期稳定版的3.10. ##记得切换到root用户执行升级操作. [root@localhos ...

  10. com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK assets/com.xx.xx

    完整的Error 信息(关键部分) Error:Execution failed for task ':fanwe_o2o_47_mgxz_dingzhi:transformResourcesWith ...