Skip to content

功能

权限管理

本质上可以分为三类:

  • 第一类就是功能权限(其实也是页面权限):决定用户可以访问哪些页面或功能模块
  • 第二类就是按钮权限:决定用户在某个页面上可以使用哪些具体操作
  • 第三类就是接口权限:一般与按钮权限配合使用,有可能路由配置的时候按钮忘记加权限

步骤如下: 在登录的时候服务端返回一个权限数,它是一个树形结构进行呈现的,我们需要对这个树形结构进行解析,根据这个树形结构会生成对应的动态路由表或者说动态的路由数组,然后利用 Vue Router 的 addRoute 方法动态插入这些路由,然后就可以根据这个动态数据去显示左边的菜单,这就是所谓的页面权限。对于按钮权限,权限数里面就包含了指定页面下指定的按钮数据,那么这样的话我们无论使用隐藏还是禁用元素其实都可以。最后一个接口权限,这个东西大多时候在服务端去处理就可以了

如何处理 token

正常情况下我们去登录的时候,一般把密码进行加密,登录完成之后,然后给服务端,服务端一般会给我们一个对应的 token,拿到 token 之后一般会去做一个持久化缓存形式,再下次请求的时候在请求头里携带 token 进行登录,如果 token 过期的话,在响应拦截中会先清除 token 然后再跳转到登录页

如何实现单点登录

  1. 如果主域名一样,可以基于 cookie 共享来实现
  2. 如果主域名不一样,则需要使用 SSO(推荐用 CAS)
  3. 如果需要接入第三方登录,使用 0Auth2.0

e.g. xxx.baidu.com 其中baidu.com是主域名

对一个网页全局异常捕获怎么做?

javascript
app.config.errorHandler = (err, vm, info) => {
  console.error("Vue error caught: ", err, info);
  // 你可以在这里发送错误日志到服务器
};

try {
  // 关键代码段
} catch (error) {
  console.error("Caught in try-catch: ", error);
  // 你可以在这里发送错误日志到服务器
}

window.onerror = function (message, source, lineno, colno, error) {
  console.error("Global error caught: ", message, source, lineno, colno, error);
  // 你可以在这里发送错误日志到服务器
  return false; // 返回 true 阻止浏览器默认的错误处理(显示错误消息)。
};

window.addEventListener(
  "error",
  function (event) {
    console.error("Resource error caught: ", event);
    // 你可以在这里发送错误日志到服务器
    return true; // 返回 true 阻止浏览器默认的错误处理(显示错误消息)。
  },
  true
);

基于 MIT 许可发布