加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 服务器 > 安全 > 正文

利用各种手段来监听用户的操作行为

发布时间:2023-11-02 11:01:49 所属栏目:安全 来源:
导读:在很多场景下,除了异常监控有用,收集用户的行为数据同样有意义。在一个产品中,用户最基本的行为就是切换页面。用户使用了哪些功能,也能从切换页面中体现出来。因此通用数据一般是在页面切换时产生,表示某个用户

在很多场景下,除了异常监控有用,收集用户的行为数据同样有意义。

在一个产品中,用户最基本的行为就是切换页面。用户使用了哪些功能,也能从切换页面中体现出来。因此通用数据一般是在页面切换时产生,表示某个用户访问了某个页面。

页面切换对应到前端就是路由切换,可以通过监听路由变化来拿到新页面的数据。Vue 在全局路由守卫中监听路由变化,任意路由切换都能执行这里的回调函数。

// Vue3 路由写法

const router = createRouter({ ... })

router.beforeEach(to => {

// to 代表新页面的路由对象

recordBehaviors(to)

})

React 在组件的 useEffect 中实现相同的功能。不过要注意一点,监听所有路由变化,则需要所有路由都经过这个组件,监听才有效果。具体的方法是配置路由时加 * 配置:

import HomePage from '@/pages/Home'

<Route path="*" component={HomePage} />,

然后在这个组件的的 useEffect 中监听路由变化:

// HomePage.jsx

const { pathname } = useLocation();

useEffect(() => {

// 路由切换这个函数触发

recordBehaviors(pathname);

}, [pathname]);

上面代码中,在路由切换时都调用了 recordBehaviors() 方法并传入了参数。Vue 传的是一个路由对象,React 传的是路由地址,接下来就可以在这个函数内收集数据了。

明确了在哪里收集数据,我们还要知道收集哪些数据。收集行为数据最基本的字段如下:

app:应用的名称/标识

env:应用环境,一般是开发,测试,生产

version:应用的版本号

user_id:当前用户 ID

user_name:当前用户名

page_route:页面路由

page_title:页面名称

start_at:进入时间

end_at:离开时间

上面的字段中,应用标识、环境、版本号统称应用字段,用于标志数据的来源。其他字段主要分为 用户,页面,时间三类,通过这三类数据就可以简单的判断出一件事:谁到过哪个页面,并停留了多长时间。

最简单的方法,在函数 recordBehaviors() 所处的 js 文件中,直接导入用户状态:

// 从状态管理里中导出用户数据

import { UserStore } from '@/stores';

let { user_id, user_name } = UserStore;

这里的 @/stores​ 指向我项目中的文件 src/stores/index.ts,表示状态管理的入口文件,使用时替换成自己项目的实际位置。实际情况中还会有用户数据为空的问题,这里需要单独处理一下,方便我们在后续的数据查看中能看出分别:

import { UserStore } from '@/stores';

// 收集行为函数

const recordBehaviors = ()=> {

let report_date = {

...

}

if(UserStore) {

let { user_id, user_name} = UserStore

report_date.user_id = user_id || 0

report_date.user_name = user_name || '未命名'

} else {

report_date.user_id = user_id || -1

report_date.user_name = user_name || '未获取'

}

}

上面代码中,首先判断了状态管理中是否有用户数据,如果有则获取,没有则指定默认值。这里指定默认值的细节要注意,不是随便指定的,比如 user_id 的默认值有如下意义:

user_id 为 0:表示有用户数据,但没有 user_id 字段或该字段为空

user_id 为 -1:表示没有用户数据,因而 user_id 字段获取不到

用户数据是经常容易出错的地方,因为涉及到登录状态和权限等复杂问题。指定了上述默认值后,就可以从收集到的行为数据中判断出某个页面用户状态是否正常。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章