nodejs mysql koa 怎么做登录

JavaScript013

nodejs mysql koa 怎么做登录,第1张

利用 Express 中间件功能实现登录拦截。如果用户请求的路径需要登录后才能访问,将用户重定向到登录页面,登录成功后将用户重定向到原始请求路径。

设置应用中间件,监控所有请求

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

// app.js

app.use(function (req, res, next) {

if (req.session.user) { // 判断用户是否登录

next()

} else {

// 解析用户请求的路径

var arr = req.url.split('/')

// 去除 GET 请求路径上携带的参数

for (var i = 0, length = arr.lengthi <lengthi++) {

arr[i] = arr[i].split('?')[0]

}

// 判断请求路径是否为根、登录、注册、登出,如果是不做拦截

if (arr.length >1 &&arr[1] == '') {

next()

} else if (arr.length >2 &&arr[1] == 'user' &&(arr[2] == 'register' || arr[2] == 'login' || arr[2] == 'logout')) {

next()

} else { // 登录拦截

req.session.originalUrl = req.originalUrl ? req.originalUrl : null // 记录用户原始请求路径

req.flash('error', '请先登录')

res.redirect('/user/login') // 将用户重定向到登录页面

}

}

源代码执行时估计是不好改。你在断点中断执行时,可以在控制台, 输入一些JS语句,修改变量的值,然后再取消断点,继续执行原代码,就能达到同样的目标。如何才能做到IE浏览器JS脚本拦截并修改

使用js跳转的过程当中遇到了window.open()被chrome内核的浏览器拦截的问题。 出于安全考虑chrome浏览器会拦截掉非用户操作的行为,比如直接使用js跳转链接,这个行为不是用户的直接行为就会被chrome浏览器屏蔽掉。 比如我有一个click的事件 window.open()不是第一个执行的方法,它就会被屏蔽掉。 解决方案很简单,执行函数的时候,比如click,让window.open()先执行,打开一个空的窗口 然后再执行 在新打开的窗口当中读取网页内容。 这样就可以打开新窗口,并且不被chrome拦截了。