c#登录时保存账号密码到cookie
登陆界面有用户名、密码输入框,一个’记住账号密码‘的复选框。
1.登录时,勾选‘记住账号密码‘复选框,则会把用户名密码保存在客户端cookie里,保存时间为最大值(直到用户清除浏览器缓存或者取消勾选’记住账号密码‘复选框);
2.登录时,取消勾选‘记住账号密码‘复选框,会清除cookie保存的用户名密码。
3.登录时,当修改了用户名密码,会判断cookie保存的值是否与输入的相同,如果不同,则会修改cookie的值。
4.登录时,当勾选了‘记住账号密码‘复选框,下次打开登录界面,‘记住账号密码‘复选框初始化为选中状态(这样用户就明白用户名和密码已经保存在cookie中);否则,是未选中状态。(同QQ登录)
主要代码:
一、前端
html:
<body>
<form name="form1" method="post">
<label>用户名</label><input type="text" name="UserName" id="username" />
<label>密 码</label><input type="password" name="Password" id="userpass" />
<input type="button" onclick="f_Login()" name="sm1" class="login_btn" value="登录" />
<input id="rd" type="checkbox" name="rd_S" style="margin: 20px 0px 2px 20px" />
<label style="margin-top: 20px">记住账号密码</label>
</form>
</body>
</html>
js、jquery:
<script type="text/javascript">
var rootPath = '@Url.Content("~/Admin/")';
var username = '@ViewBag.UserName';
var password = '@ViewBag.UserPassWord'; $(document).ready(function () {
if (username != "") {
$("#username").attr("value", username);
$("#userpass").attr("value", password);
$("#rd").attr("checked", "checked"); //当cookie记录了账号密码,则初始化‘记住账号密码’复选框时为勾选状态
}
else {
$("#rd").removeAttr("checked");
}
}); @*登录*@
function f_Login() {
var IsSaveLoInfo; //标识是否记住账号密码
if ($("#rd").attr("checked")) {
IsSaveLoInfo = true;
}
LG.ajax({
url: '@Url.Content("~/Admin/Login/LoginAndRedirect")',
loading: '正在登陆中...',
data: { UserName: $("#username").val(), Password: $("#userpass").val(), IsSaveLoInfo: IsSaveLoInfo },
success: function (result) {
if (!result) {
LG.showError("登录失败,帐号或密码错误!");
return false;
}
location.href = "@Url.Content("~/Admin/Manage/Index")";
},
error: function (message) {
LG.showError(message);
}
});
}
</script>
二、后台:
[Description("加载登陆页面")]
public ActionResult UserLogin()
{
//获取cookie保存的账号密码
string UserNameCookie = CookieHelper.GetCookieValue("UserNameCookie");
string UserPasswordCookie = CookieHelper.GetCookieValue("UserPasswordCookie");
ViewBag.UserName = UserNameCookie;
ViewBag.UserPassWord = UserPasswordCookie;
return View("Login");
}
[Description("login登录,登录成功则跳转")]
public ActionResult LoginAndRedirect()
{
UserRequest request = new UserRequest(HttpContext);
bool IsSaveLoginInfo = Convert.ToBoolean(HttpContext.Request["IsSaveLoInfo"]); //是否保存登陆账号密码
string UserNameCookie = CookieHelper.GetCookieValue("UserNameCookie");
string UserPasswordCookie = CookieHelper.GetCookieValue("UserPasswordCookie");
//判断是否把登陆账号密码到cookie
if (IsSaveLoginInfo)
{
if(UserNameCookie != request.UserName )//当输入的用户名与cookie保存的不同,修改cookie的
CookieHelper.SetCookie("UserNameCookie", request.UserName, DateTime.MaxValue);
if(UserPasswordCookie != request.Password)
CookieHelper.SetCookie("UserPasswordCookie", request.Password, DateTime.MaxValue);
}
else
{
CookieHelper.ClearCookie("UserNameCookie");
CookieHelper.ClearCookie("UserNameCookie");
}
………其他处理代码………
}
CookieHelper类:
/// <summary>
/// Cookie类
/// </summary>
public class CookieHelper
{
/// <summary>
/// 清除指定Cookie
/// </summary>
/// <param name="cookiename">cookiename</param>
public static void ClearCookie(string cookiename)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[cookiename];
if (cookie != null)
{
cookie.Expires = DateTime.Now.AddYears(-);
HttpContext.Current.Response.Cookies.Add(cookie);
}
} /// <summary>
/// 获取指定Cookie值
/// </summary>
/// <param name="cookiename">cookiename</param>
/// <returns></returns>
public static string GetCookieValue(string cookiename)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[cookiename];
string cookievalue = string.Empty;
if (cookie != null)
{
cookievalue = cookie.Value;
}
return cookievalue ;
} /// <summary>
/// 添加一个Cookie
/// </summary>
/// <param name="cookiename">cookie名</param>
/// <param name="cookievalue">cookie值</param>
/// <param name="expires">过期时间 DateTime</param>
public static void SetCookie(string cookiename, string cookievalue, DateTime expires)
{
HttpCookie cookie = new HttpCookie(cookiename)
{
Value = cookievalue,
Expires = expires
};
HttpContext.Current.Response.Cookies.Add(cookie);
}
}
c#登录时保存账号密码到cookie的更多相关文章
- 在某网站的登录页面登录时如果选择“记住用户名”,登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页面中存在一个超链接,单击超链接可以链接到第三个页面查看信息。若选择“
Response实现登录并记录用户名和密码信息 在某网站的登录页面登录时如果选择"记住用户名",登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页 ...
- display的none与block(判断登录界面的账号密码是否为空)
判断登录界面的账号密码是否为空的时候又不想用alert显示就需要用display来隐藏alert啦(在设置时切忌要将隐藏的内容写在账号和密码的div中,否则会根据屏幕的分辨率不同而有所变化,这是本人教 ...
- 修改官方发行openstack镜像的cloud-init登录方式为账号密码登录
openstack使用的镜像多为qcow2格式,各个发行商也开源了针对openstack制作的镜像.但是这些镜像的登录方式都是注入用户名和密码的方式,就是说不能够直接通过账号和密码登录.那么如何将一个 ...
- localStorage保存账号密码
首先是判断浏览器是否支持这一属性,他是HTML5里的属性: if(window.localStorage){ alert('支持');}else{ alert('不支持');} localStorag ...
- git 本地保存账号密码
用ssh连接的项目都不用输账号密码 如果https的话 每次都用输入账号密码 很繁琐 解决方法,在本地的工程文件夹的.git下打开config文件添加: [credential] he ...
- TortoiseGit 保存账号密码
TortoiseGit下载网址:http://download.tortoisegit.org/tgit/ 修改.gitconfig .gitconfig 用于记录git配置信息 路径:系统盘:\Us ...
- git永久保存账号密码,免去git重复输入账号密码操作
这是我刚刚遇到的问题,每次操git操作都要输入用户名和密码,网上百度了下搜到了方法解决了 方法一:(快捷简单) 直接在git bash 中执行命令:git config --global creden ...
- TFS登录时保存了用户密码,如何用其他账户登录
来源:http://blog.csdn.net/littlegreenfrog/article/details/5254633 使用TFS2008过程中,常常由于已经保存用户名和密码,却没有重新登 ...
- iOS - 记住用户登录状态保存用户名密码
我们在使用APP时常用的一个功能:用户第一次进入APP时自动进入登录注册页,提示用户注册登录,用户登录成功后才进入主页,再次进入APP时,不用再次登录就直接进到主页了,就算杀掉该APP进程再次进入,依 ...
随机推荐
- Spring : 征服数据库 (两)
本节介绍Spring和ORM集成框架.尽管Hibernate在开源ORM 社区很受欢迎.但是,本文将MyBatis案例解说.也MyBatis和Hibernate好坏是没有意义的,主要看实际需求,有兴趣 ...
- ssh连接失败,排错经验(转)
一.场景描述 ssh连接服务器,发现连接失败,但是对应服务器的ip能够ping通. 场景: [root@yl-web ~]# ssh root@10.1.101.35 ssh_exchange_ide ...
- Maven聚合和继承的详细解释
说到聚合与继承我们都非常熟悉,maven相同也具备这种设计原则.以下我们来看一下Maven的pom怎样进行聚合与继承的配置实现. 一.为什么要聚合? 随着技术的飞速发展和各类用户对软件的要求越来越高. ...
- js 性能优化整理之 高频优化
mousemove 拖拽操作 var count = 0; elem.onmousemove = function(){ count++; // 当计数器为偶数的时候不执行mousemove if( ...
- BI—脚不一样的感觉
在这个网络智能的时代,假设生活和智能挂不上边那就太落后啦!尤其IT行业更是如此,前不久还在用微软的office做报表,这几天就吵吵着换成BI,那么BI是什么?有什么用?怎么用?等等带着这一系列的问题来 ...
- 求N!末尾的0的个数(找规律+递归)
0\'s Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描写叙述 计算整数n!(n的阶乘)末尾有多少个0. 输入 第一行输入一个数T代 ...
- Javascipt数组去重的几种方式
方法一 function unique(arr) { var retArr = []; for (var i = 0; i < arr.length; i++) { (retArr.indexO ...
- poj 1698 Alice's Chance 拆点最大流
将星期拆点,符合条件的连边,最后统计汇点流量是否满即可了,注意结点编号. #include<cstdio> #include<cstring> #include<cmat ...
- Cocos2d-3x:vs2012项目开关android项目需要注意的地方
http://www.cocoachina.com/bbs/read.php?tid=194668 先依照这个文章导入库到vs项目. 在vs项目的sceen类的里加入 #include "c ...
- sql小总结2
SQL NULL 值 如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录.这意味着该字段将以 NULL 值保存. NULL 值的处理方式与其他值不同. NULL ...