# 权限

## 登录

权限管理的第一步，就是用户登录，默认情况下，iFace需要后端维护一个session来保持用户的登录状态，配套的后端[base-api](https://github.com/ccqiuqiu/base-api)就是利用redis和cookies实现了一个session的机制，在用户登录成功后，后端会给用户生成一个唯一的seeeionId，并将这个seeeionId写入客户端cookies，并在redis里面作为key保存用户的基本信息和权限信息，之后用户的每个请求都会从cookies里面获得seeeionId，来作为用户登录的凭证。

当然，你还有别的方式来实现，例如jwt，在用户登录成功后，生成一个token返回给前端，前端在每个请求的时候，将token放入headers里面传给后端，后端通过这个token来验证用户。当然通过这个方式，前端的代码要相应做一些改动。

## 退出登录

按照iFace的设计，后端需要提供一个退出的接口，用于用户手动退出的时候，清理服务端缓存的用户信息，如果你的后端并不需要这个操作，可以在前端代码中去掉这个请求，代码见：`/src/modules/common/view/NavView.vue`

## 鉴权

后端需要添加一个过滤器拦截所有的请求，通过比对请求的url和用户有权限的资源url来决定是否放行，后端需要遵循以下约定

* 以`/public`开头的请求表示不需要就能访问的接口，这个类型的请求，直接放行
* 以`/base`开头的请求，是获取一些基础数据的接口，并没有加入到资源管理里面，只要用户登录就能放行
* 如果还有特殊的请求，后端可以配置一个白名单来放行这些请求
