登陆界面有用户名、密码输入框,一个’记住账号密码‘的复选框。

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的更多相关文章

  1. 在某网站的登录页面登录时如果选择“记住用户名”,登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页面中存在一个超链接,单击超链接可以链接到第三个页面查看信息。若选择“

    Response实现登录并记录用户名和密码信息 在某网站的登录页面登录时如果选择"记住用户名",登录成功后会跳转到一个中间层(页面代码将登录的用户名和密码存在cookie),中间页 ...

  2. display的none与block(判断登录界面的账号密码是否为空)

    判断登录界面的账号密码是否为空的时候又不想用alert显示就需要用display来隐藏alert啦(在设置时切忌要将隐藏的内容写在账号和密码的div中,否则会根据屏幕的分辨率不同而有所变化,这是本人教 ...

  3. 修改官方发行openstack镜像的cloud-init登录方式为账号密码登录

    openstack使用的镜像多为qcow2格式,各个发行商也开源了针对openstack制作的镜像.但是这些镜像的登录方式都是注入用户名和密码的方式,就是说不能够直接通过账号和密码登录.那么如何将一个 ...

  4. localStorage保存账号密码

    首先是判断浏览器是否支持这一属性,他是HTML5里的属性: if(window.localStorage){ alert('支持');}else{ alert('不支持');} localStorag ...

  5. git 本地保存账号密码

    用ssh连接的项目都不用输账号密码 如果https的话   每次都用输入账号密码   很繁琐 解决方法,在本地的工程文件夹的.git下打开config文件添加: [credential]     he ...

  6. TortoiseGit 保存账号密码

    TortoiseGit下载网址:http://download.tortoisegit.org/tgit/ 修改.gitconfig .gitconfig 用于记录git配置信息 路径:系统盘:\Us ...

  7. git永久保存账号密码,免去git重复输入账号密码操作

    这是我刚刚遇到的问题,每次操git操作都要输入用户名和密码,网上百度了下搜到了方法解决了 方法一:(快捷简单) 直接在git bash 中执行命令:git config --global creden ...

  8. TFS登录时保存了用户密码,如何用其他账户登录

      来源:http://blog.csdn.net/littlegreenfrog/article/details/5254633 使用TFS2008过程中,常常由于已经保存用户名和密码,却没有重新登 ...

  9. iOS - 记住用户登录状态保存用户名密码

    我们在使用APP时常用的一个功能:用户第一次进入APP时自动进入登录注册页,提示用户注册登录,用户登录成功后才进入主页,再次进入APP时,不用再次登录就直接进到主页了,就算杀掉该APP进程再次进入,依 ...

随机推荐

  1. ANDROID L——Material Design详细解释(UI控制)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lolli ...

  2. HDU 3366 Passage (概率DP)

    Passage Problem Description Bill is a millionaire. But unfortunately he was trapped in a castle. The ...

  3. 安装Docker

    安装Docker 1. 增加Repository配置文件 cat >/etc/yum.repos.d/docker.repo <<-EOF [dockerrepo]name=Dock ...

  4. 在sd卡,创建目录和文件

    在本文中,sd卡的情况下创建的文件和目录,介绍如何创建目录和文件的重点. 1. 路径问题(以下的样例是在Java中測试的,在Android中相同适用) 1.1 假设须要在目录中创建文件的目录存在,直接 ...

  5. deepinmind(转)

    http://it.deepinmind.com/ 花名有孚,支付宝工程师 有希望加入支付宝的同学,可以把简历发到我的个人邮箱spidercoco@gmail.com

  6. PYTHON单元测试

    PYTHON开发入门与实战11-单元测试 1. 单元测试 本章节我们来讲讲django工程中如何实现单元测试,单元测试如何编写以及在可持续项目中单元测试的重要性. 下面是单元测试的定义: 单元测试是开 ...

  7. Hadoop它——跑start-all.sh时间namenode不启动

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46353211 近期遇到了一个问题,运行start-all.sh的时候发现JPS一下 ...

  8. android EditText问题多行文本输入

    一旦习惯了网络和swing在文本框输入,我们Android突然缺乏这样的管制,刚开始使用它是相当费力.为了要实现多行文本输入框和显示.逐一克服这些问题,如下面: 1. 怎么做EditText显示区域在 ...

  9. 杭电1162Eddy&#39;s picture

    Eddy's picture Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Tota ...

  10. hadoop得知;datajoin;chain署名;combine()

    hadoop一种简化机制来管理job和control作业之间的非线性依赖,job对象mapreduce表明. job该目的是通过使实例化jobconf对象的构造函数的工作落实. x.addDeopen ...