.net登录的一般模式
思路:
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登录的一般模式的更多相关文章
- Linux开机自动登录(文本模式)
• Linux系统启动登录过程 以RedHat/CentOS为例,Linux系统Level3模式下从启动到登录的整个过程大致如下: 1> 加载BIOS信息:包含了CPU/显卡/内存/硬盘/网卡等 ...
- linux重启后进入了救援模式,无法远程登录
卸载删除了某个文件系统分区的逻辑卷,但是没有修改fstab文件,导致系统重启异常,此时已经无法远程连接了,只能本地登录到救援模式修改
- Spring Security OAuth2 微服务认证中心自定义授权模式扩展以及常见登录认证场景下的应用实战
一. 前言 [APP 移动端]Spring Security OAuth2 手机短信验证码模式 [微信小程序]Spring Security OAuth2 微信授权模式 [管理系统]Spring Se ...
- 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销
第七天的课程主要是讲了自定义标签.简单介绍了mvc设计模式.然后做了案例 1. 自定义标签 1.1 为什么要有自定义标签 前面所说的EL.JSTL等技术都是为了提高jsp的可读性.可维护性.方便性而取 ...
- C/S架构程序多种类服务器之间实现单点登录(转)
(一) 在项目开发的过程中,经常会出现这样的情况:我们的产品包括很多,以QQ举例,如登陆.好友下载.群下载.网络硬盘.QQ游戏.QQ音乐等,总不能要求用户每次输入用户名.密码吧,为解决这个问题,高手提 ...
- 设计模式17---设计模式之模板方法模式(Template Method)(行为型)
1.场景模拟 使用软件模拟登录控制,普通用户和工作人员用户,工作人员的密码在数据库中是加密的. 步骤大致如下: 前台提交,后台获取登录信息,同数据库中的登陆信息进行比较,只不过工作人员是加密的,普通用 ...
- php设计模式(二):结构模式
上一篇我们介绍了设计模式的特性并且详细讲解了4种创建型模式,创建型模式是负责如何产生对象实例的,现在我们继续来给大家介绍结构型模式. 一.什么是结构型模式? 结构型模式是解析类和对象的内部结构和外部组 ...
- 朱晔和你聊Spring系列S1E10:强大且复杂的Spring Security(含OAuth2三角色+三模式完整例子)
Spring Security功能多,组件抽象程度高,配置方式多样,导致了Spring Security强大且复杂的特性.Spring Security的学习成本几乎是Spring家族中最高的,Spr ...
- Oracle 不小心删除undo数据文件以及磁盘空间不足导致不能登录的解决办法
在一次测试中,由于导入的数据量过大导致事务一直提交失败因为磁盘空间不够用了,一检查发现是undo表空间不够用,于是重新创建了一个表空间,准备把之前的undo表空间删除,删除时却发现一直删不掉,因为它一 ...
随机推荐
- javaScript 基础知识
一.三个对话框 1.alert("提示信息") 弹出只带有一个确定按钮的对话框2.confirm("提示信息") 弹出有确定和取消按钮的对话框3.prompt( ...
- tomcat 的优化配置
一.关于并发连接量的配置 在tomcat的server.xml配置文件中:将<Connector port="8080" protocol="HTTP/1.1&qu ...
- 探讨Js的事件的冒泡阶段
近来看到了一个新的知识点叫Js的事件冒泡,因此决定自己来研究一番. 大家应该都知道,Js中的事件处理分为三个阶段,1:事件的捕获阶段,2:处于目标阶段,3:事件的冒泡阶段.那么什么是事件的捕获和冒泡呢 ...
- SikuliX简介及安装
一.简单介绍 SikuliIDE和Sikuli Script就是现在的SikuliX,最新版本是SikuliX1.1.0, 部分兼容Sikuli JAVA API,支持Python和Ruby,Siku ...
- mfc的OnInitDialog的返回值
以前从未注意过初始化函数的返回值,今天看到书中所述,以后可能用得上. OnInitDialog的返回值告诉windows如何处置输入焦点,如果返回 TRUE,则windows将输入焦点指派给制表键控制 ...
- CSS系列:CSS选择器
选择器(selector)是CSS中很重要的概念,所有HTML语言中的标记样式都是通过不同的CSS选择器来控制的.用户只需要通过选择对不同的HTML标签进行选择,并赋予各种样式声明,即可实现各种效果. ...
- android的logcat详细用法
Android日志系统提供了记录和查看系统调试信息的功能.日志都是从各种软件和一些系统的缓冲区中记录下来的,缓冲区可以通过 logcat 命 令来查看和使用. 使用logcat命令 你可以用 logc ...
- WebView 与PC机Chrome配合调试
参考自http://www.cnblogs.com/terrylin/p/4606277.html 移动端WebView开发调试:Chrome远程调试 Chrome DevTools调试移动设备Bro ...
- 前端学PHP之文件操作
× 目录 [1]文件类型 [2]文件属性 [3]目录路径[4]目录遍历[5]目录统计[6]目录增删[7]目录复制[8]文件操作[9]文件内容 前面的话 在程序运行时,程序本身和数据一般都存在内存中,当 ...
- NFS Volume Provider(Part I) - 每天5分钟玩转 OpenStack(62)
cinder-volume 支持多种 volume provider,前面我们一直使用的是默认的 LVM,本节我们将增加 NFS volume provider. 虽然 NFS 更多地应用在实验或小规 ...