B051-cms06-退出 回车登录 登录拦截 记住我 SVN

这篇具有很好参考价值的文章主要介绍了B051-cms06-退出 回车登录 登录拦截 记住我 SVN。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

注销功能实现

1.找到退出按钮修改请求路径

header.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
		<header class="app-header">
    		<a class="app-header__logo" href="index.html">源码</a>
			<a class="app-sidebar__toggle" href="#" data-toggle="sidebar" aria-label="Hide Sidebar"></a>
			<!-- 导航条右边菜单 -->
      		<ul class="app-nav">
        		<!-- 用户菜单 -->
       	 		<li class="dropdown">
        			<a class="app-nav__item" href="#" data-toggle="dropdown" aria-label="Open Profile Menu">
        			<i class="fa fa-user fa-lg"></i></a>
          			<ul class="dropdown-menu settings-menu dropdown-menu-right">
            			<li>
            				<a class="dropdown-item" href="/system/logout">
            				<i class="fa fa-sign-out fa-lg"></i> 退出 </a>
            			</li>
          			</ul>
        		</li>
      		</ul>
		</header>
2.后端删除Session并跳转到登录页面

UserController

	@RequestMapping("/logout")
	public String logout(HttpSession session) {
		// 首先删除Session
		session.invalidate();
		// 跳转到登录页面
		return "login";
	}

回车登录功能

1.整个登录页面绑定键盘按压回车键事件
2.发送抽取之后的登陆请求
login.jsp

	<script type="text/javascript">
     	$(function(){
     		// 抽取登录方法
     		function login(){
     			$(".login-form").ajaxSubmit({
     				success: function(msg){
     					if(msg.success){// 成功
     						// 跳转到后台首页
     						location.href="/system/index";
     					}else{
     						$("#loginError").html("<font color='red' size='4'>"+msg.error+"</font>");
     					}
     				}
     			});
     		}
     		
     		$("#loginBtn").click(function(){
     			login();
     		});
     		
     		// 整个页面绑定键盘按压事件
     		$(document).on("keypress",function(e){
				// console.debug(e.keyCode)
				if(e.keyCode==13){
					login();
				}
			})
     	})
     </script>

登陆拦截

防止直接跳过登录页面直接访问后台页面
B051-cms06-退出 回车登录 登录拦截 记住我 SVN

1.编写登录拦截器

LoginInterceptor

public class LoginInterceptor implements HandlerInterceptor {

	@Override
	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		// TODO Auto-generated method stub
		
	}

	@Override
	public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object arg2) throws Exception {
		// 判断session中是否有user
		// 获取session
		Object user = req.getSession().getAttribute("USER_IN_SESSION");
		if(user==null){// 没有登录
			//跳转到登录页面
			resp.sendRedirect("/system/login");
			return false;
		}
		return true;
	}

}
2.配置拦截器

applicationContext-mvc.xml

	<!-- 拦截器 -->
	<mvc:interceptors>
		<!-- 拦截器 -->
		<mvc:interceptor>
			<!-- 要拦截的配置,该配置必须写在不拦截的上面,/*拦截一级请求,/**拦截多级请求 -->
			<mvc:mapping path="/system/**"  />
			<!-- 设置不拦截的配置 -->
			<mvc:exclude-mapping path="/system/login"/>
			<!-- <mvc:exclude-mapping path="/upload"/> -->
			<!-- 配置拦截器 -->
			<bean class="cn.itsource.interceptor.LoginInterceptor" />  
		</mvc:interceptor>
	</mvc:interceptors>

记住我

有勾选记住我,账号密码正确,通过Cookie将账号密码显示到输入框中

<div class="animated-checkbox">
    <label>
        <input id="remember" name="remember" type="checkbox" value="1"><span class="label-text">记住我</span>
    </label>
</div>
后端实现

UserController

	@RequestMapping(value="/login",method=RequestMethod.POST)
	@ResponseBody
	public AjaxResult login(Integer remember,String username,String password,HttpSession session,HttpServletRequest req,HttpServletResponse resp){
		
		try {
			User user = service.login(username,password);
			// 把用户信息放入session中
			session.setAttribute("USER_IN_SESSION", user);
			
			// 判断是否勾选记住我
			if(remember!=null){
				
				// 创建cookie
				Cookie c1 = new Cookie("username", username);
				Cookie c2 = new Cookie("password", password);
				
				// 设置路径
				c1.setPath("/");
				c2.setPath("/");
				
				// 记住我时间     cookie存活时间
				c1.setMaxAge(7*24*60*60);
				c2.setMaxAge(7*24*60*60);
				
				// 添加到浏览器
				resp.addCookie(c1);
				resp.addCookie(c2);
			}
						
			return new AjaxResult();
		} catch (Exception e) {
			// 从exception中取错误信息
			return new AjaxResult(false, e.getMessage());
		}
	}
页面实现

用户名、密码和记住我标签加上id,用来填充数据

<div class="form-group">
    <label class="control-label">用户名</label>
    <input class="form-control" type="text" id="username"  name="username" placeholder="用户名" autofocus>
</div>
<div class="form-group">
    <label class="control-label">密码</label>
    <input class="form-control" type="password" id="password" name="password" placeholder="密码">
</div>
<div class="form-group">
    <div class="utility">
        <div class="animated-checkbox">
            <label>
                <input id="remember" name="remember" type="checkbox" value="1"><span class="label-text">记住我</span>
            </label>
        </div>
    </div>
</div>

login.jsp

			// 记住我功能
			var cookies = document.cookie;
			if(cookies.indexOf("username=")!=-1){ // 记住我了
				//console.debug(cookies);
				// 根据;切割
				var arr = cookies.split(";")
				//console.debug(arr);
				//遍历
				for(var i in arr){
					//console.debug(arr[i])
					// 判断是否包含username
					if(arr[i].indexOf("username")!=-1){
						var username = arr[i].substring(arr[i].indexOf("=")+1);
						// 回显
						$("#username").val(username);
						//console.debug(username);
					}
					if(arr[i].indexOf("password")!=-1){ // 获取密码
						var password = arr[i].substring(arr[i].indexOf("=")+1);
						// 回显
						$("#password").val(password);
						// 选中记住我
						$("#remember").prop("checked",true);
					}
				}
			}

取消记住我

后端实现

UserController

	@RequestMapping(value="/login",method=RequestMethod.POST)
	@ResponseBody
	public AjaxResult login(Integer remember,String username,String password,HttpSession session,HttpServletRequest req,HttpServletResponse resp){
		
		try {
			User user = service.login(username,password);
			// 把用户信息放入session中
			session.setAttribute("USER_IN_SESSION", user);
			
			// 判断是否勾选记住我
			if(remember!=null){
				
				// 创建cookie
				Cookie c1 = new Cookie("username", username);
				Cookie c2 = new Cookie("password", password);
				
				// 设置路径
				c1.setPath("/");
				c2.setPath("/");
				
				// 记住我时间     cookie存活时间
				c1.setMaxAge(7*24*60*60);
				c2.setMaxAge(7*24*60*60);
				
				// 添加到浏览器
				resp.addCookie(c1);
				resp.addCookie(c2);
				
			}else{// 取消记住我
				//获取cookies
				Cookie[] cookies = req.getCookies();
				for (Cookie cookie : cookies) {
					if(cookie.getName().equals("username") || cookie.getName().equals("password")){
						// 删除cookie
						cookie.setMaxAge(0);
						// 设置路径
						cookie.setPath("/");
						// 重新添加
						resp.addCookie(cookie);
					}
				}
			}
			return new AjaxResult();
		} catch (Exception e) {
			// 从exception中取错误信息
			return new AjaxResult(false, e.getMessage());
		}
	}
页面实现

login.jsp文章来源地址https://www.toymoban.com/news/detail-512165.html

			// 记住我功能
			var cookies = document.cookie;
			if(cookies.indexOf("username=")!=-1){ // 记住我了
				//console.debug(cookies);
				// 根据;切割
				var arr = cookies.split(";")
				//console.debug(arr);
				//遍历
				for(var i in arr){
					//console.debug(arr[i])
					// 判断是否包含username
					if(arr[i].indexOf("username")!=-1){
						var username = arr[i].substring(arr[i].indexOf("=")+1);
						// 回显
						$("#username").val(username);
						//console.debug(username);
					}
					if(arr[i].indexOf("password")!=-1){ // 获取密码
						var password = arr[i].substring(arr[i].indexOf("=")+1);
						// 回显
						$("#password").val(password);
						// 选中记住我
						$("#remember").prop("checked",true);
					}
				}
			}else{
				// 取消记住我
				$("#username").val("");
				$("#password").val("");
				$("#remember").prop("checked",false);
			}

到了这里,关于B051-cms06-退出 回车登录 登录拦截 记住我 SVN的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 22.实战演练--记住密码和登录状态

    在登录注册案例的基础上,实现一个相对完整的登录注册模块 (1).记住密码 (2).记住登录状态(自动登录) (3).注册成功,登录成功,退出登录时的页面跳转

    2024年01月16日
    浏览(38)
  • springsecurity记住我登录时访问无权限接口,跳转登录界面

    贴一下springsecurity无权限时异常处理的逻辑 未登录状态:如果用户尝试访问需要认证的资源但未登录,即未经过认证,在这种情况下应该跳转到登录页面或者返回登录提示,让用户进行身份验证。通过调用 AuthenticationEntryPoint 可以统一处理未登录状态下的跳转逻辑,确保用户

    2024年02月21日
    浏览(37)
  • Spring Security 6.0系列【8】认证篇之注销登录

    有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.0.4 本系列Spring Security 版本 6.0.2 源码地址:https://gitee.com/pearl-organization/study-spring-security-demo

    2023年04月08日
    浏览(43)
  • 微信小程序记住密码,让登录解放双手

    密码是用户最重要的数据,也是系统最需要保护的数据,我们在登录的时候需要用账号密码请求登录接口,如果用户勾选记住密码,那么下一次登录时,我们需要将账号密码回填到输入框,用户可以直接登录系统。我们分别对这种流程进行说明: 记住密码 在请求登录接口成

    2024年02月02日
    浏览(38)
  • html中登录按钮添加回车键登录

    原文链接有3种方法,其它2中不会弄,第二种方法成功,下面详细说说 原html的登录部分是 在该html中增加 需要注意的是 中的button与原html中id属性保持一致。

    2024年02月08日
    浏览(42)
  • 使用 Sa-Token 实现 [记住我] 模式登录、七天免登录

    如图所示,一般网站的登录界面都会有一个 [记住我] 按钮,当你勾选它登录后,即使你关闭浏览器再次打开网站,也依然会处于登录状态,无须重复验证密码: 本文将详细介绍在 Sa-Token中,如何做到以下登录模式: 记住我登录:登录后关闭浏览器,再次打开网站登录状态依

    2024年02月09日
    浏览(42)
  • Android studio自动登录和记住密码的实现

    大家好,我是oy,今天介绍一下在登录页面中如何实现自动登录及记住密码。 使用sharedPreferenced存储用户账号和密码,以及是否记住密码和自动登录。 记住密码和自动登录按钮都采用checkButton,使用checkButton的OnCheckedChangeListener监听。 1. SharedPreferenced sharedPreferenced是Android中存储

    2023年04月22日
    浏览(53)
  • vue项目登录页面实现记住用户名和密码

    记录一下实现的逻辑,应该分两步来理解这个逻辑 首次登录,页面没有用户的登录信息,实现逻辑如下: 用户输入用户名和密码登录,用户信息为名为form的响应式对象,v-model分别对应两个输入框 用户点击登录实现登录功能 判断是否勾选了记住密码,v-model一个CheckBox,勾选

    2024年02月15日
    浏览(47)
  • 【uni-app2.0】实现登录页记住密码功能

    使用uni-app的 uni.setStorageSync() 和 uni.getStorageSync() 方法来存储和读取密码 在登录页中添加一个记住密码的 u-checkbox 选项,并在data里面添加一个 rememberPwd 的布尔值,在每次点击记住密码 change 的时候来记录用户的选择 在点击登录按钮执行的事件中,使用 uni.setStorageSync() 方法将【

    2024年02月15日
    浏览(56)
  • 帝国cms7.5整合论坛程序discuzX3.2同时登陆退出的实现方法

    1、首先参照下载帝国CMS7.5安装在网站根目录,同时安装完毕,另外在下载discuzX3.2到网站目录club文件夹。并安装完毕 2、按照帝国论坛教程http://bbs.phome.net/showthread-35-78648-0.html 3、在修改帝国CMS目录下的e/config.inc.php文件配置:(UTF-8版要用dreamweaver或editplus修改,用记事本会将文

    2024年02月03日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包