流程

  1. 点击登录按钮,前端把当前的url,传给后台
  2. 后台把url传给,登录页面
  3. 登录页面,点击登录,跳转到登录前的页面

效果

第一步

第二步

第三步

router

    router.get('/login', initMiddleware, controller.default.pass.login);

点击登录按钮

view

appviewdefaultpublicheader.html

<li><a href="javascript:void(0)" id="loginButton" target="_blank">登录</a></li>

apppublicdefaultjsbase.js

        initLogin: function() {$("#loginButton").click(function() {// alert(location.href);location.href = '/login?returnUrl=' + encodeURIComponent(location.href);})}

controller

appcontrollerdefaultpass.js

    async login() {//获取returnUrlvar returnUrl = this.ctx.request.query.returnUrl;returnUrl = returnUrl ? decodeURIComponent(returnUrl) : '/';await this.ctx.render('default/pass/login.html', {returnUrl: returnUrl});}

登录页面

appviewdefaultpasslogin.html

<input type="hidden" name="returnUrl" id="returnUrl" value="<%=returnUrl%>" />
            $("#doLogin").click(function(e) {var returnUrl = $('#returnUrl').val();var username = $('#username').val();var password = $('#password').val();var identify_code = $('#identify_code').val();var reg = /^[\d]{11}$/;if (!reg.test(username)) {alert('手机号输入错误');return false;}if (identify_code.length < 4) {alert('验证码长度不合法');return false;}//ajax请求$.post('/pass/doLogin', {username: username,identify_code: identify_code,password: password}, function(response) {console.log(response);if (response.success == true) {// location.href = "/";location.href = returnUrl;} else {$("#identify_code_img").attr('src', '/verify?mt=' + Math.random());alert(response.msg);}})})

去结算的登录跳转

中间件

appmiddlewareuserauth.js

module.exports = (options, app) => {return async function init(ctx, next) {//判断前台用户是否登录   如果登录可以进入 ( 去结算  用户中心)    如果没有登录直接跳转到登录var userinfo = ctx.service.cookies.get('userinfo');var prevPage = ctx.request.headers.referer; //上一个页面的地址if (userinfo && userinfo._id && userinfo.phone) {//判断数据库里面有没有当前用户                var userResutl = await ctx.model.User.find({ "_id": userinfo._id, "phone": userinfo.phone });if (userResutl && userResutl.length > 0) {//注意await next();} else {// ctx.redirect('/login');ctx.redirect('/login?returnUrl=' + encodeURIComponent(prevPage));}} else {// ctx.redirect('/login');ctx.redirect('/login?returnUrl=' + encodeURIComponent(prevPage));}};
};

效果

egg(113)--egg之登录成功跳转到登录之前的页面相关推荐

  1. 登录form php一个页面跳转页面,Extjs4中表单登录功能、登录成功跳转页面的代码...

    本节内容: Extjs4实现的表单登录功能,登录成功跳转页面. 例子: 复制代码 代码示例: Ext.onReady(function(){ Ext.QuickTips.init(); Ext.cre ...

  2. Vue中使用axios的响应拦截器处理请求失败的情况(处理token过期问题)以及 登录成功跳转回原来页面问题

    参考axios官方文档 // 响应拦截器 // Add a response interceptor request.interceptors.response.use(// 在2xx范围内的任何状态 ...

  3. 用php写登录成功后的界面,登录成功后跳转_php如何实现登录成功后跳转页面

    摘要 腾兴网为您分享:php如何实现登录成功后跳转页面,指南针,优软商城,优美图,天天美剧等软件知识,以及蓝光mp3剪切器,微信6,scandallpro,新页生产管理软件,asmr音频,lc标签打印 ...

  4. php拦截登录页面跳转页面,PHP未登录自动跳转到登录页面

    PHP未登录自动跳转到登录页面 下面一段代码给大家分享php未登录自动跳转到登录页面,具体代码如下所示: namespace Home\Controller; use Think\Controller ...

  5. 基于SSM的订餐系统---未登录则跳转至登录页面(过滤器实现)

    问题分析 用户如果不登录,直接访问系统首页,照样可以正常访问 我们希望必须登录成功之后才能访问系统中的页面,如果没有登录则跳转至登录界面 使用过滤器或者拦截器,在过滤器或拦截器中判断用户是否已经完成登 ...

  6. 登录之后跳转到登录之前的页面 going to previous page after login

    登录之前保存跳转过来的链接地址(带参数) Session::put('redir_url', URL::full()); return Redirect::to('user/login'); 登录之后 ...

  7. mysql的免密码登录_mysql免密码登录(mysql跳过密码登录)

    mysql免密码登录(mysql跳过密码登录) 2020-05-15 13:07:13 共10个回答 1.用系统管理员登陆windows系统.2.停止MySQL的服务.3.运行cmd进入dos命令窗口 ...

  8. 怎么实现登录之后跳转到登录之前的页面?SpringMVC+Freemarker

    项目中,想实现一个功能. 直接访问某个需要登录的url,比如/addArticle,可能会跳转到登录页面login.html. 登录成功之后,自动跳转到/addArticle这个登录前的页面,继续登录 ...

  9. Spring Security——实现登录后跳转到登录前页面

    基本概念 暂无. 官方文档 https://docs.spring.io/spring-security/site/docs/5.3.1.BUILD-SNAPSHOT/reference/html5/ ...

最新文章

  1. spark为什么比hive速度快?
  2. C# JS URL 中文传参出现乱码的解决方法
  3. Spring Boot与Activiti集成实战
  4. 根据一级分类查询所有子级分类
  5. C# 页面关联类似模式窗口
  6. 微信小程序 - 基础 - 003 - WEUI - 基本表单组件 - form - 页面数据提交和获取 - 01
  7. 怎么一步一步的开一家公司?
  8. Processing中PDF格式输出
  9. 乔布斯斯坦福大学演讲pdf_演讲能力训练方法amp;优秀的演讲视频
  10. 好好工作,别想不开去创业。
  11. zcu106 固化_ZCU106的PYNQ移植
  12. 软路由虚拟服务器,带你入门软路由 篇三:软路由也玩虚拟化——轻松几步教你配置Esxi网卡直通和软路由虚拟机设置(保姆级教程)...
  13. 这几款超好用的协同办公软件,你都get了吗
  14. Photoshop CC 2017安装
  15. 计算机英语汇总(保持更新)
  16. 微信网址遮罩引导法升级版,微信自动跳转默认浏览器打开HTML
  17. Android中通过USB接口与和PC进行通讯的demo程序
  18. java gis地图开发视频_开源GIS视频教程
  19. 让我们红尘作伴活得潇潇洒洒
  20. 环洋市场调研-2021年全球抗衰老肽护肤品行业调研及趋势分析报告

热门文章

  1. 李彦宏:AI模仿人脑是走不通的
  2. AI一分钟 | 今天,百度又多了一个好基友华为,还互赠了信物;腾讯AI Lab“肢体动作追踪”技术造出了个“AI 尬舞机”
  3. Redis解决websocket在分布式场景下session共享问题
  4. 为什么要合并HTTP请求?
  5. 创业公司技术总监,去上市公司面试,结果凉了!
  6. 深度介绍分布式系统原理与设计
  7. Elasticsearch索引生命周期管理方案
  8. Netty实现心跳机制与断线重连
  9. 没有银弹,微服务架构改造的一条不归路。。。
  10. 经典面试题: 为啥 ConcurrentHashMap 读操作不需要加锁?