前端如何限制(控制)用户登录时长

前端如何限制(控制)用户登录时长

2022年8月8日 写

简述:

所谓限制登录的时长,就是用户进入页面后长时间没有如何的操作,最常见的比如银行的 APP 登录;想必用过掌上银行APP的都知道,当我们离开页面运行后台一会,就会让我们重新登录,这就是限制了我们的登录时长

下面我就对自己常用的一种方式进行分享

这里说明一下使用框架为Vue2

代码部分
Login.vue 页面部分
	methods:{
		//这里写入一个事件,点击登录时获取当前的事件并保存到本地中
		loginBtn(){
		//这里我使用的是本地存储中的 sessionStorage 方式;这就要说一下它的特点了,它是存储方式中时间短暂,而且不用我们手动去清除(离开页面或关闭浏览器自动清除),这就避免了我们在本地存储了大量的时间
			sessionStorage.setItem('loginFirstTime',new Date().getTime())
		//保存一个标识
			sessionStorage.setItem('firstTime','firstTime')
		//此时时间保存完成,正常执行进入首页
			this.$router.push({path:'/home'})
		}
	}
//
Home.vue  首页部分
//在初始化(created)时,通过 addEventListener 对页面的事件(点击、滚动)等进行监听,在这里它的
第三个参数要设置为 true ;因为addEventListener 默认是冒泡事件,设置为true 改为捕获事件,这样我们
无论点击任何一个位置它都可以从最外层捕获到具体的元素所触发的事件

created(){
	window.addEventListener('click',()=>{
		//在这里再一次获取时间,方便后面进行比较,名称和前面一样,为了获取进入首页后的最新一次事件的时间
		sessionStorage.seItem('loginFirstTime',new Date().getTime())
	},true)
},
mounted(){
	this.timeDifference()
},
methods:{
	timeDifference(){
		clearInterval(this.timer)
		this.timer = setInterval(()=>{//n代表一个数字
			let newClickTime = sessionStorage.getItem('loginFirstTime')*n//获取最新的上一次点击时间并转换成数字
			let nowTime = new Date().getTime(); // 获取当前最新时间
			//此时当前最新时间与上一次点击最新的时间进行比较
			if(nowTime - newClickTime > 1000 * n){
				// 提示一下用户登录即将超时退出
          		this.$message({ type: "warning", message: "已超时,强制退出登录" });
          		// 这里要清除定时器,结束任务
          		clearInterval(this.timer);
          		// 最后返回到登录页面
          		this.$router.push({ path: "/login" });
			}
		},1000)
	}
},
beforeDestroy(){
	//在网页销毁前或者离开页面前清除定时器和解绑事件
	clearInterval(this.timer)
	window.addEventListener('click',()=>{},true)
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 首先,需要在 Vue 中安装 vue-router 来管理路由。其次,需要在组件中使用 v-model 指令绑定数据到表单元素上,并且监听登录按钮的点击事件。最后,使用 axios 库发送请求到后端进行登录验证。 代码示例: ``` <template> <div> <form> <label>用户名:</label> <input type="text" v-model="username" placeholder="请输入用户名" /> <br /> <label>密码:</label> <input type="password" v-model="password" placeholder="请输入密码" /> <br /> <button @click.prevent="login">登录</button> </form> </div> </template> <script> import axios from 'axios' export default { data() { return { username: '', password: '' } }, methods: { login() { const data = { username: this.username, password: this.password } axios.post('/api/login', data).then(res => { if (res.data.success) { // 登录成功 this.$router.push('/home') } else { // 登录失败 alert(res.data.message) } }) } } } </script> ``` 请注意,这只是一个简单的示例, 生产环境中应该对密码进行加密处理,并且需要注意CORS问题. ### 回答2: 使用Vue写一个前端登录页面,首先需要引入Vue相关的依赖,并初始化一个Vue实例。 在Vue的实例中,可以定义data属性,用于存储登录页面的各种状态和数据。比如,可以定义一个用户名和密码的data属性,并在模板中使用v-model指令对其进行双向数据绑定。 此外,可以定义一个登录方法,用于处理用户点击登录按钮时的事件。在该方法中,可以向后端发送请求,验证用户输入的用户名和密码是否正确。如果验证通过,可以进行页面跳转或其他操作;如果验证失败,可以给用户显示错误信息。 在模板中,可以使用v-if指令来根据不同的登录状态显示不同的内容。比如,在用户成功登录后,可以显示欢迎信息和退出按钮;在用户未登录时,可以显示登录表单和登录按钮。 在样式方面,可以使用CSS来美化登录页面。可以定义一些基本的样式,如输入框的边框颜色、按钮的背景颜色等,以及一些交互动画效果,如输入框获取焦点时的动画等。 最后,可以使用Vue Router来为登录页面添加路由功能。可以定义一个登录页的路由,当用户输入相关路由时,显示登录页面。 总结起来,使用Vue编写前端登录页面,需要引入Vue相关的依赖,定义相关的data属性和方法,使用v-model指令进行双向数据绑定,使用v-if指令根据不同的登录状态显示不同的内容,使用CSS美化页面,使用Vue Router添加路由功能。 ### 回答3: 使用Vue编写前端登录可以分为以下几个步骤: 1. 导入Vue及相关依赖:在项目中导入Vue及其他需要使用的依赖,例如Vue Router、Axios等。 2. 创建Vue实例:使用Vue的构造函数创建一个新的Vue实例,将其挂载到HTML文档中的一个DOM元素上,这样Vue就可以控制该DOM元素。 3. 创建登录组件:使用Vue的组件功能创建一个登录组件,在该组件中可以定义登录所需要的表单输入框和按钮,并处理用户的输入。 4. 实现表单校验:使用Vue的表单校验功能对用户输入的表单进行校验,例如对用户名和密码的长度、格式进行验证。 5. 处理表单提交:当用户点击登录按钮时,可以在组件中定义一个方法来处理表单的提交。在该方法中,可以通过Ajax或Axios等工具发送请求,将用户输入的用户名和密码发送给后端服务器进行验证。 6. 处理登录结果:根据后端返回的登录结果,可以在组件中设置相应的状态和提示信息,例如登录成功后跳转到首页,登录失败则显示错误提示。 7. 路由跳转:在登录成功后,可以使用Vue Router来进行页面跳转,将用户导航到登录后的页面。 8. 实时数据绑定:在登录过程中,可以使用Vue的数据绑定功能将用户输入的信息实时显示在页面上,提高用户体验。 9. 防止重复提交:可以在组件中添加一些逻辑控制,防止用户在登录过程中多次重复提交登录请求,提升系统的安全性和性能。 以上是使用Vue编写前端登录的大致步骤,具体的实现方式可能会根据具体的需求和技术栈有所变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值