diff --git a/sa-token-demo-springboot/src/main/java/com/pj/CorsFilter.java b/sa-token-demo-springboot/src/main/java/com/pj/CorsFilter.java
deleted file mode 100644
index 4a0cf1f6..00000000
--- a/sa-token-demo-springboot/src/main/java/com/pj/CorsFilter.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.pj;
-
-import java.io.IOException;
-
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.springframework.stereotype.Component;
-
-/**
- * 跨域过滤器
- * @author kong
- */
-@Component
-public class CorsFilter implements Filter {
-
- static final String OPTIONS = "OPTIONS";
-
- @Override
- public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
- throws IOException, ServletException {
- HttpServletRequest request = (HttpServletRequest) req;
- HttpServletResponse response = (HttpServletResponse) res;
- // 获得客户端domain
- String origin = request.getHeader("Origin");
- if (origin == null) {
- origin = request.getHeader("Referer");
- }
- // 允许指定域访问跨域资源
- response.setHeader("Access-Control-Allow-Origin", origin);
- // 允许客户端携带跨域cookie,此时origin值不能为“*”,只能为指定单一域名
- response.setHeader("Access-Control-Allow-Credentials", "true");
- // 允许所有请求方式
- response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
- // 有效时间
- response.setHeader("Access-Control-Max-Age", "3600");
- // 允许的header参数
- response.setHeader("Access-Control-Allow-Headers", "x-requested-with,satoken");
- // 允许的header参数
-// response.setHeader("Access-Control-Allow-Headers", "*");
-
- // 如果是预检请求,直接返回
- if (OPTIONS.equals(request.getMethod())) {
- System.out.println("=======================浏览器发来了OPTIONS预检请求==========");
- response.getWriter().print("");
- return;
- }
-
- // System.out.println("*********************************过滤器被使用**************************2233");
- chain.doFilter(req, res);
- }
-
- @Override
- public void init(FilterConfig filterConfig) {
- }
-
- @Override
- public void destroy() {
- }
-
-}
diff --git a/sa-token-doc/doc/more/common-questions.md b/sa-token-doc/doc/more/common-questions.md
index 336c3a3c..8683fa63 100644
--- a/sa-token-doc/doc/more/common-questions.md
+++ b/sa-token-doc/doc/more/common-questions.md
@@ -49,11 +49,6 @@
可能是404了,SpringBoot环境下如果访问接口404后,会被重定向到`/error`,然后被再次拦截,如果是其它原因,欢迎加群反馈
-### 如何把权限精确搭到按钮级?
-在登录时,把当前用户拥有的权限码一次性返回给前端,让前端进行判断,
-例如使用vue等框架可以这样写:``
-其中`arr`是当前用户拥有的权限码数组,`user:delete`是显示按钮需要拥有的权限码,`删除按钮`是用户拥有权限码才可以看到的内容
-
### 权限可以做成动态的吗?
权限本来就是动态的,只有jwt那种模式才是非动态的
diff --git a/sa-token-doc/doc/use/jur-auth.md b/sa-token-doc/doc/use/jur-auth.md
index 90e94135..8763a95d 100644
--- a/sa-token-doc/doc/use/jur-auth.md
+++ b/sa-token-doc/doc/use/jur-auth.md
@@ -112,4 +112,24 @@ StpUtil.checkRoleOr("user:update", "user:delete");
### 拦截全局异常
有同学要问,鉴权失败,抛出异常,然后呢?要把异常显示给用户看吗?**当然不可以!**
-你可以创建一个全局异常拦截器,统一返回给前端的格式,参考:[码云:GlobalException.java](https://gitee.com/sz6/sa-token/blob/master/sa-token-demo-springboot/src/main/java/com/pj/test/GlobalException.java)
\ No newline at end of file
+你可以创建一个全局异常拦截器,统一返回给前端的格式,参考:[码云:GlobalException.java](https://gitee.com/sz6/sa-token/blob/master/sa-token-demo-springboot/src/main/java/com/pj/test/GlobalException.java)
+
+
+### 如何把权限精确搭到按钮级?
+权限精确到按钮级的意思就是指:**权限范围可以控制到页面上的每一个按钮是否显示**
+
+思路:如此精确的范围控制只依赖后端已经难以完成,此时需要前端进行一定的逻辑判断
+
+1. 在登录时,把当前账号拥有的所有权限码一次性返回给前端
+2. 前端将权限码集合保存在`localStorage`或其它全局状态管理对象中
+3. 在需要权限控制的按钮上,使用js进行逻辑判断,例如在`vue`框架中我们可以使用如下写法:
+``` js
+
+```
+其中:`arr`是当前用户拥有的权限码数组,`user:delete`是显示按钮需要拥有的权限码,`删除按钮`是用户拥有权限码才可以看到的内容
+
+
+注意:以上写法只为提供一个参考示例,不同框架有不同写法,开发者可根据项目技术栈灵活封装进行调用
+
+### 前端有了鉴权后端还需要鉴权吗?
+**需要!前端的鉴权只是一个辅助功能,对于专业人员这些限制都是可以轻松绕过的,为保证服务器安全,无论前端是否进行了权限校验,后端接口都需要对会话请求再次进行权限校验!**
diff --git a/sa-token-doc/doc/use/login-auth.md b/sa-token-doc/doc/use/login-auth.md
index 3d48730c..08959c94 100644
--- a/sa-token-doc/doc/use/login-auth.md
+++ b/sa-token-doc/doc/use/login-auth.md
@@ -66,6 +66,6 @@ StpUtil.getTokenValue();
StpUtil.getTokenInfo();
```
-有关TokenInfo参数详解,请参考:[参考:TokenInfo参数详解](/fun/token-info)
+?> 有关TokenInfo参数详解,请参考:[参考:TokenInfo参数详解](/fun/token-info)