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进程再次进入,依 ...
随机推荐
- SVN与eclipse整合和利用、SVN与Apache综合
SVN与eclipse综合 下载SVN插入(http://subclipse.tigris.org) http://subclipse.tigris.org/servlets/ProjectDocum ...
- Windows Phone 8 MD5
using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Wi ...
- Java 新特性(7) - Java EE 7 新特性
http://www.ibm.com/developerworks/cn/java/j-lo-javaee7/ 新特性主要集中在: 1. 提高开发人员的生产力 2. 加强对 HTML5 动态可伸缩应用 ...
- JSP简单的练习-功能标签
<!-- userfn.jsp --> <%@ page contentType="text/html;charset=gb2312" %> <%@ ...
- css Tab选项卡1
利用 锚点原理 以及overflow:hiden 结合,实现纯 css tab 方式 兼容ie6 + 适合单个tab 不需要js 注意点 红色方框的 a 对应a ...
- C++随机数的使用方法
学过别的高级语言的都知道,产生随机数用的都是相似于random这种字符,c++也不例外,在C++中使用的是rand()函数,可是不同的是,假设在C++中仅仅使用了比如 "int i ...
- Azure VM Public IP设置
Azure虚拟机的Public IP是用于客户端直连云中的虚拟机,可以认为是一个外网IP,一般我们为虚拟机设置终结点,例如HTTP的80端口,如果使用Public IP可以不使用Azure Porta ...
- BZOJ 2878([Noi2012]-失落的游乐园树DP+出站年轮加+后市展望DP+vector的erase)
2878: [Noi2012]迷失乐园 Time Limit: 10 Sec Memory Limit: 512 MBSec Special Judge Submit: 319 Solved: ...
- BZOJ 1015 JSOI2008 星球大战 starwar 并检查集合
标题效果:给定一个无向图.联通谋求块的数目,以及k一个点的破坏后每次:联通,块的数目 侧面和摧毁的地步全记录,我们可以做相反的. 需要注意的是该点不能算作破坏联通块 #include<cstdi ...
- Android重力加速度传感器数据去噪
public void onSensorChanged(SensorEvent event) { final float alpha = 0.8; gravity[0] = alpha * gravi ...