• element ui框架(登陆状态保存)


    【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

            web前端开发中很重要的一点就是登录状态的保存。这么做有几个好处,一是避免了用户需要频繁登陆密码;另外一个就是确保用户在使用所有功能之前已经处于登录状态了。要实现这一要求,可以通过使用sessionStorage和路由劫持的方法来解决。

    1、在客户输入密码之后,就开始记录登录状态

    1. submitForm(formName) {
    2. //alert('submit!');
    3. this.$refs[formName].validate((valid) => {
    4. if (valid) {
    5. sessionStorage.setItem('isLogin','true'); //保存到sessionStorage
    6. this.$router.push({name:"Main",params:{"name":this.form.name}});
    7. } else {
    8. this.$message.error('请输入正确用户名或密码!');
    9. return false;
    10. }
    11. });
    12. }

            上面这段代码中,最重要的就是sessionStorage.setItem这个语句。

    2、在路由钩子函数中增加判断

    1. router.beforeEach((to,from,next)=>{
    2. let isLogin = sessionStorage.getItem('isLogin')
    3. if(to.path=='/Logout'){
    4. sessionStorage.clear()
    5. next({path:"/Login"})
    6. }
    7. else if(to.path == '/Login') {
    8. if(isLogin != null) {
    9. next({path:'/Main/admin'}) //这里和下面都作弊了,相关数据应该从vuex获取,后面会涉及到
    10. }
    11. }
    12. else if(to.path == '/') {
    13. if(isLogin != null) {
    14. next({path:'/Main/admin'})
    15. }
    16. else{
    17. next({path:'/Login'})
    18. }
    19. }
    20. else if(isLogin == null){
    21. next({path:'/Login'})
    22. }
    23. next();
    24. })

            这段代码是放在main.js中。可以简单来分析下,首先如果是登出,那么清除sessionStorage,重新进入登入页面;如果是去登入页面或者根页面,但已经处于登入状态,那么直接进入主页面;如果是根页面,要么去Login页面,要么去Main页面;如果不是上面三种,但是没有处于登陆状态,那么先进入登录页面;剩下来的就是直接访问了。

            注意,上面有个地方作弊了,没有记录当前用户是谁,直接使用了admin,这部分需要在后续使用vuex的时候涉及。

    3、添加一个Logout链接

            在Main.vue中增加一个推出的链接,

    1. <el-dropdown-item>
    2. <router-link to="/Logout">退出登录 </router-link>
    3. </el-dropdown-item>

    4、开始测试

            可以测试这么几种情况,

            4.1 直接登入根页面,验证是否进入Login页面;

            4.2 进入Main页面后,重新登入根页面;

            4.3 进入Main页面后,退出再登入;

            4.4 进入Main页面后,重新登入Login页面。

            4.5 进入Main页面后,登入其他子页面。

  • 相关阅读:
    c++ 字符串匹配算法sunday算法
    (附源码)springboot养老院系统 毕业设计 645488
    交换高级特性 —— VACL+PACL
    Python中如何在模块搜索路径中添加自己的目录
    Git 分支管理规范
    kafka优化配置,Kafka 的消费者客户端详解
    Halcon 光度立体 缺陷检测
    图片转PDF有哪些软件?这几款软件建议收藏
    如何分析精准分析出问题件
    Unity 实例化物体以及赋予到父物体之下
  • 原文地址:https://blog.csdn.net/feixiaoxing/article/details/126923372