|
@@ -0,0 +1,46 @@
|
|
|
+package com.lc.admin.config;
|
|
|
+
|
|
|
+import com.cl.mbg.model.TUser;
|
|
|
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
|
|
+import org.springframework.security.core.context.SecurityContext;
|
|
|
+import org.springframework.security.core.context.SecurityContextHolder;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.web.filter.OncePerRequestFilter;
|
|
|
+
|
|
|
+import javax.servlet.FilterChain;
|
|
|
+import javax.servlet.ServletException;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import javax.servlet.http.HttpServletResponse;
|
|
|
+import javax.servlet.http.HttpSession;
|
|
|
+import java.io.IOException;
|
|
|
+import java.util.Objects;
|
|
|
+
|
|
|
+@Component
|
|
|
+public class SecurityFilter extends OncePerRequestFilter {
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Security 有两个功能
|
|
|
+ * 1 鉴权
|
|
|
+ * 2 授权
|
|
|
+ * @param request
|
|
|
+ * @param response
|
|
|
+ * @param filterChain
|
|
|
+ * @throws ServletException
|
|
|
+ * @throws IOException
|
|
|
+ */
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
|
|
|
+ HttpSession session = request.getSession(true);
|
|
|
+ TUser user = (TUser) session.getAttribute("user");
|
|
|
+ SecurityContext context = SecurityContextHolder.getContext();
|
|
|
+ if (Objects.nonNull(user)) {
|
|
|
+ UsernamePasswordAuthenticationToken AuthenticationToken =
|
|
|
+ new UsernamePasswordAuthenticationToken( user.getUsername(), null, null );
|
|
|
+ context.setAuthentication( AuthenticationToken );
|
|
|
+ } else {
|
|
|
+ SecurityContextHolder.clearContext();
|
|
|
+ }
|
|
|
+ filterChain.doFilter( request, response );
|
|
|
+ }
|
|
|
+}
|