设置应用中间件,监控所有请求
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拦截了。