zhoushihao
2024-04-09 25790d514828ef9772c134c26487cd436f593553
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
//package com.mes.filter;
//
//import com.mes.security.TokenManager;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.security.authentication.AuthenticationManager;
//import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
//import org.springframework.security.core.GrantedAuthority;
//import org.springframework.security.core.authority.SimpleGrantedAuthority;
//import org.springframework.security.core.context.SecurityContextHolder;
//import org.springframework.security.web.authentication.www.BasicAuthenticationFilter;
//
//import javax.servlet.FilterChain;
//import javax.servlet.ServletException;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.IOException;
//import java.util.ArrayList;
//import java.util.Collection;
//import java.util.List;
//
//public class TokenAuthFilter extends BasicAuthenticationFilter {
//
//    private TokenManager tokenManager;
//    private RedisTemplate redisTemplate;
//    public TokenAuthFilter(AuthenticationManager authenticationManager,TokenManager tokenManager,RedisTemplate redisTemplate) {
//        super(authenticationManager);
//        this.tokenManager = tokenManager;
//        this.redisTemplate = redisTemplate;
//    }
//
//    @Override
//    protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException {
//        //获取当前认证成功用户权限信息
//        UsernamePasswordAuthenticationToken authRequest = getAuthentication(request);
//        //判断如果有权限信息,放到权限上下文中
//        if(authRequest != null) {
//            SecurityContextHolder.getContext().setAuthentication(authRequest);
//        }
//        chain.doFilter(request,response);
//    }
//
//    private UsernamePasswordAuthenticationToken getAuthentication(HttpServletRequest request) {
//        //从header获取token
//        String token = request.getHeader("token");
//        if(token != null) {
//            //从token获取用户名
//            String username = tokenManager.getUserInfoFromToken(token);
//            //从redis获取对应权限列表
//            List<String> permissionValueList = (List<String>)redisTemplate.opsForValue().get(username);
//            Collection<GrantedAuthority> authority = new ArrayList<>();
//            for(String permissionValue : permissionValueList) {
//                SimpleGrantedAuthority auth = new SimpleGrantedAuthority(permissionValue);
//                authority.add(auth);
//            }
//            return new UsernamePasswordAuthenticationToken(username,token,authority);
//        }
//        return null;
//    }
//
//}