如何写登录的记住账号

开发工具与关键技术:Visual Studio、MVC
作者:幻奏
撰写时间:2019.05.27

上次我把如何登录的代码给写了,却没有写如何记住登录的账号密码,所以现在我就简单的写一下是如何记住账号密码的。
如果我们没写记住密码的话,那每登录一次就要重新输入一遍,太麻烦了。所以我们还是把记住密码写上去方便一些。写记住密码也是挺简单的,就是判断是否把记住密码打钩了,然后把账号和密码存储到session中,然后登录的时把它回填回去,账号的存储时间是根据cookie来判断的。
首先我们在控制器那里把用户登录的方法给写了,然后在判断查询出登录的账号、密码和数据库的账号、密码一样时,我们就要把查询出的用户账号信息放到session里面去。

public ActionResult UserLogin(S_User pwUser){string strMsg = "fail";//定义一个记录状态的变量// 获取页面传递的变量string strUserNumber = pwUser.UserNumber;//用户名string strPassword = pwUser.Password; //密码string strIsRember = Request["rememberMe"];//记住否    try{S_User dbUser = (from tbUser in myModel.S_Userwhere tbUser.UserNumber == strUserNumber && tbUser.ToVoidNo == trueselect tbUser).Single();结果只能有一条数据,0条或者大于等于2条都会出现异常if (strPassword == dbUser.Password){//把用户数据放到session中//设置sessionSession["UserID"] = dbUser.UserID;// 传递 UserIDSession["ServerTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");//登录时间

然后判断用户是否勾选了记住密码,是就保存到cookie里面去,不是就把它删除掉。

//记住用户信息 使用cookieif (strIsRember != null && strIsRember.Trim() == "true"){//记住密码 保存cookieHttpCookie cookie = new HttpCookie("user");cookie.Expires = DateTime.Now.AddDays(7);cookie["UserNumber"] = strUserNumber;//用户名cookie["Password"] = strPassword;//密码Response.Cookies.Add(cookie);}else{//忘记HttpCookie cookie = new HttpCookie("user");cookie.Expires = DateTime.Now.AddDays(-1);//有效期设置为昨天,浏览器会自动删除cookieResponse.Cookies.Add(cookie);}

这里我们把cookie的有效期设置为昨天,浏览器会自动删除cookie的。
用户登录的方法写完后,我们就要在登录的控制器那里写回填的方法了。
首先我们要声明几个变量,然后账号和密码赋值为空,记住否的单选框我们给它false。

public ActionResult Login(){string UserNumber = "";string Password = "";bool isRember = false;

下面就是请求并获取cookie。

//获取cookieHttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies["user"];

当cookie不为空的时候,获取它的账号和密码。

if (cookie != null){if (cookie["UserNumber"] != null){UserNumber = System.Web.HttpContext.Current.Server.UrlDecode(cookie["UserNumber"]);}if (cookie["Password"] != null){Password = System.Web.HttpContext.Current.Server.UrlDecode(cookie["Password"]);}isRember = true;}

最后把数据返回到页面


//把数据传递到页面ViewBag.UserNumber = UserNumber;ViewBag.Password = Password;ViewBag.isRember = isRember;return View();}

再到页面的input里接收下账号和密码。

<div class="form-group form-row"><label class="sr-only" for="UserNumber">用户名</label><div class="col-12"><div class="input-group"><div class="input-group-prepend"><div class="input-group-text"><i class="fas fa-fw fa-user"></i></div></div><input type="text" name="UserNumber" id="UserNumber" class="form-control" placeholder="用户名" value="@ViewBag.UserNumber"/></div></div></div><div class="form-group form-row"><label class="sr-only" for="password">密码</label><div class="col-12"><div class="input-group"><div class="input-group-append"><div class="input-group-text"><i class="fas fa-fw fa-unlock"></i></div></div><input type="password" name="password" id="password" class="form-control" placeholder="密码" value="@ViewBag.Password"/></div></div></div><div class="form-group form-row"><div class="col-12"><div class="custom-control custom-checkbox"><input type="checkbox" class="custom-control-input" name="rememberMe" id="rememberMe" value="true" @(ViewBag.isRember ? "checked" : "") /><label class="custom-control-label" for="rememberMe">记住我<span style="color: red">(请不要在公用电脑上使用!)</span></label></div></div></div>

这样子记住密码就写完了,别人登录账号的时候也可以更加方便了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderLis

博主 使用Eclipse 下的Mavn搭建的SSM框架的工程&#xff0c;出现以下错误 严重: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener Java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoad…

java高级应用:线程池全面解析

转载自 java高级应用&#xff1a;线程池全面解析 什么是线程池&#xff1f; 很简单&#xff0c;简单看名字就知道是装有线程的池子&#xff0c;我们可以把要执行的多线程交给线程池来处理&#xff0c;和连接池的概念一样&#xff0c;通过维护一定数量的线程池来达到多个线程的复…

如何用for循环出数据库的数据

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.5.30在客房管理的系统中有很多不同的小格子&#xff0c;它们分别代表了不同的房间&#xff0c;可以动态的显示每间房间的状态&#xff0c;这个就是房态图。有很多系统应该都有…

Maven常见问题之【-Dmaven.multiModuleProjectDirctory system property is not set】

配置jdk时&#xff0c;声明vm参数&#xff0c;如下&#xff0c; 且需要保证 M2_HOME 环境变量已经配置了&#xff0c; 如下&#xff1a; C:\Users\pacoson>echo %M2_HOME% D:\software_cluster\apache-maven-3.3.9 -Dmaven.multiModuleProjectDirectory$M2_HOME

实现java多线程的3种方式,99%人没用过第3种

转载自 实现java多线程的3种方式&#xff0c;99%人没用过第3种 实现多线程的3种方式 1、继承Thread类 看jdk源码可以发现&#xff0c;Thread类其实是实现了Runnable接口的一个实例&#xff0c;继承Thread类后需要重写run方法并通过start方法启动线程。 继承Thread类耦合性太强了…

关于时间类型的问题

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.6.2我在做项目的时候遇到了一个问题&#xff0c;我要把时间显示到表格上&#xff0c;然后我像平常那样写&#xff0c;linq查询&#xff0c;然后返回数据&#xff0c;然后加载…

maven项目不编译xml文件

最近在搭建一个mavenspringMVCmybatis的项目&#xff0c;编译的时候mybatis生成的**Mapper.xml文件总是不编译&#xff08;classes文件夹内没有出现&#xff09;。 解决方法是在maven的pom.xml文件夹<build>标签下增加如下代码&#xff08;build标签的父标签是 project标…

多线程并发神器--ThreadLocal

转载自 多线程并发神器--ThreadLocal什么是ThreadLocal可以理解成线程本地变量&#xff0c;传统的线程对一个变量操作时操作的是同一个对象&#xff0c;也存在线程安全的问题。ThreadLocal是一个变量的本地副本&#xff0c;线程对变量的操作不会影响其他线程。首先看看ThreadLo…

如何获取复选框的值

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.6.7我们在很多地方都用到了复选框&#xff0c;数据表格里也有复选框&#xff0c;新增数据时也可能要复选框&#xff0c;修改时也要回填复选框&#xff0c;所以我们用到的地方…

使用log4j2打印mybatis的sql执行日志

【1】maven配置jar包依赖&#xff0c; 如下&#xff1a; <!-- 日志jar --><!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api --><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-…

Java多线程神器:join使用及原理

转载自 Java多线程神器&#xff1a;join使用及原理 join() join()是线程类 Thread的方法&#xff0c;官方的说明是&#xff1a; Waits for this thread to die. 等待这个线程结束&#xff0c;也就是说当前线程等待这个线程结束后再继续执行&#xff0c;下面来看这个示例就明白…

页面残留数据该如何处理

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.6.13关于页面数据残留的问题&#xff0c;我前几天就遇到了&#xff0c;刚开始的时候我写完那个页面是不知道它有毛病的&#xff0c;后来我才发现了它居然有一个小问题。 先来…

基于maven的SpringMVC+Spring+MyBatis+Log4j2的pom配置

【0】README&#xff1a;本文旨在给出可以正常跑 测试用例的项目依赖配置&#xff0c; 同时还会给出 maven 编译项目时的坑儿&#xff1b; 【1】 pom配置&#xff1a; <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/20…

一张图弄懂java线程的状态和生命周期

转载自 一张图弄懂java线程的状态和生命周期 上图是一个线程的生命周期状态流转图&#xff0c;很清楚的描绘了一个线程从创建到终止的过程。 这些状态的枚举值都定义在java.lang.Thread.State下 NEW&#xff1a;毫无疑问表示的是刚创建的线程&#xff0c;还没有开始启动。 RUNN…

如何添加数据到session中

开发工具与关键技术&#xff1a;Visual Studio、MVC 作者&#xff1a;幻奏 撰写时间&#xff1a;2019.6.17我们都知道session相当于服务器的一次对话&#xff0c;服务器会为每个新的用户创建一个新的 Session&#xff0c;并在 session 到期时撤销掉这个 Session 对象。所以sess…

MySQL8.0: Serialized Dictionary Information(SDI) 浅析

转自&#xff1a; https://yq.aliyun.com/articles/600183 SDI是Serialized Dictionary Information的缩写&#xff0c;是MySQL8.0重新设计数据词典后引入的新产物。我们知道MySQL8.0开始已经统一使用InnoDB存储引擎来存储表的元数据信息&#xff0c;但对于非InnoDB引擎&#…

非常有用的并发控制-倒计时器CountDownLatc

转载自 非常有用的并发控制&#xff0d;倒计时器CountDownLatch CountDownLatch见名思义&#xff0c;即倒计时器&#xff0c;是多线程并发控制中非常有用的工具类&#xff0c;它可以控制线程等待&#xff0c;直到倒计时器归0再继续执行。 给你出个题&#xff0c;控制5个线程执…

移除指定的session

在上次我写的文章中&#xff0c;我描述了如何把数据添加到session里面&#xff0c;再让临时表格读取session的数据显示到页面。 我们都知道&#xff0c;有添加就有移除对吧&#xff0c;哪么我们又该如何把临时表格里面的数据移除呢&#xff1f;嘿嘿&#xff0c;这个其实也挺简…

javap命令参数

C:\Users\pacoson>javap -help 用法: javap <options> <classes> 其中, 可能的选项包括:-help --help -? 输出此用法消息-version 版本信息-v -verbose 输出附加信息-l 输出行号和本地变量表-pub…

非常有用的并发控制-循环栅栏CyclicBarrier

转载自 非常有用的并发控制&#xff0d;循环栅栏CyclicBarrier昨天我讲了倒计时器CountDownLatch的应用&#xff0c;它是阻塞线程直到计时器归0的一种等待方式。今天讲的这个循环栅栏CyclicBarrier与倒计时器非常类似&#xff0c;但它比倒时器更加强大且稍微复杂&#xff0c;它…