From 6c09cbd70388ae53ec593de253f69cfa1a3eeda7 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期六, 06 二月 2021 15:41:25 +0800
Subject: [PATCH] 活动管理界面完善

---
 service-daylucky/src/main/java/com/ks/daylucky/config/WebSecurityConfig.java |  103 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 97 insertions(+), 6 deletions(-)

diff --git a/service-daylucky/src/main/java/com/ks/daylucky/config/WebSecurityConfig.java b/service-daylucky/src/main/java/com/ks/daylucky/config/WebSecurityConfig.java
index e54b02b..51afc95 100644
--- a/service-daylucky/src/main/java/com/ks/daylucky/config/WebSecurityConfig.java
+++ b/service-daylucky/src/main/java/com/ks/daylucky/config/WebSecurityConfig.java
@@ -3,7 +3,11 @@
 import com.google.code.kaptcha.Producer;
 import com.google.code.kaptcha.impl.DefaultKaptcha;
 import com.google.code.kaptcha.util.Config;
+import com.ks.daylucky.util.Constant;
+import com.ks.lucky.pojo.DO.LuckySponsors;
+import com.ks.lucky.remote.service.LuckySponsorService;
 import net.sf.json.JSONObject;
+import org.apache.dubbo.config.annotation.Reference;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.annotation.Bean;
@@ -16,6 +20,8 @@
 import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.AuthenticationException;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
 import org.springframework.security.core.userdetails.UserDetailsService;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
@@ -33,15 +39,20 @@
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Properties;
 
 @EnableWebSecurity
 public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
 
+    @Reference(version = "1.0.0")
+    private LuckySponsorService luckySponsorService;
+
     private Logger logger = LoggerFactory.getLogger(WebSecurityConfig.class);
 
 
-    private final String LOGIN_PROCESSING_URL="/admin/api/user/login";
+    private final String LOGIN_PROCESSING_URL = "/admin/api/user/login";
 
     //鍥惧舰楠岃瘉鐮侀厤缃�
     @Bean
@@ -124,21 +135,27 @@
         http.headers().frameOptions().disable();
         http.authorizeRequests()
                 .antMatchers("/admin/api/captcha.jpg*").permitAll()
-                .antMatchers("/admin/api/**","/index.html").authenticated()
+                .antMatchers("/admin/api/**", "/index.html").authenticated()
                 .and()
                 .formLogin()
                 //鑷畾涔夌櫥褰曠晫闈�
-                .loginPage("/login.html")
+                .loginPage("/admin/login.html")
+                //璁剧疆鎺ユ敹鐨勫睘鎬у瓧娈�
+                .usernameParameter("account")
+                .passwordParameter("pwd")
                 //澶勭悊鐧诲綍閫昏緫鐨剈rl
                 .loginProcessingUrl(LOGIN_PROCESSING_URL)
                 //鐧诲綍鎴愬姛鍚庣殑璺宠浆
                 .successHandler(new AuthenticationSuccessHandler() {
                     @Override
                     public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException {
+                        SecurityUser user = (SecurityUser) authentication.getPrincipal();
+                        LuckySponsors sponsors =user.getSponsors();
+                        httpServletRequest.getSession().setAttribute(Constant.SESSION_ADMIN_SPONSOR_KEY, sponsors);
                         logger.info("successHandler");
                         httpServletResponse.setContentType("application/json;charset=UTF-8");
                         JSONObject jsonObject = new JSONObject();
-                        jsonObject.put("code", 200);
+                        jsonObject.put("code", 0);
                         jsonObject.put("msg", "鐧诲綍鎴愬姛");
                         httpServletResponse.getWriter().print(jsonObject);
                     }
@@ -190,13 +207,71 @@
 
     }
 
+    class SecurityUser implements UserDetails {
+
+        private LuckySponsors sponsors;
+
+        public SecurityUser() {
+
+        }
+
+        public SecurityUser(LuckySponsors sponsors) {
+            this.sponsors = sponsors;
+        }
+
+        public LuckySponsors getSponsors() {
+            return sponsors;
+        }
+
+        @Override
+        public Collection<? extends GrantedAuthority> getAuthorities() {
+            Collection<GrantedAuthority> authorities = new ArrayList<>();
+            SimpleGrantedAuthority authority = new SimpleGrantedAuthority("admin");
+            authorities.add(authority);
+            return authorities;
+        }
+
+        @Override
+        public String getPassword() {
+            return sponsors.getPwd();
+        }
+
+        @Override
+        public String getUsername() {
+            return sponsors.getName();
+        }
+
+        @Override
+        public boolean isAccountNonExpired() {
+            return true;
+        }
+
+        @Override
+        public boolean isAccountNonLocked() {
+            return true;
+        }
+
+        @Override
+        public boolean isCredentialsNonExpired() {
+            return true;
+        }
+
+        @Override
+        public boolean isEnabled() {
+            return true;
+        }
+    }
+
     class MyUserDetailsService implements UserDetailsService {
 
         @Override
         public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
-
+            LuckySponsors sponsors = luckySponsorService.getSponsorByAccount(s);
+            if (sponsors == null) {
+                throw new UsernameNotFoundException("璐︽埛涓嶅瓨鍦�");
+            }
             //TODO 鐢ㄦ埛鏉冮檺璧嬩簣
-            return null;
+            return new SecurityUser(sponsors);
         }
     }
 
@@ -217,5 +292,21 @@
                 throw new BadCredentialsException("瀵嗙爜閿欒");
             }
         }
+
+        @Override
+        public Authentication authenticate(Authentication authentication) throws AuthenticationException {
+            // 鑾峰彇鍓嶇琛ㄥ崟涓緭鍏ュ悗杩斿洖鐨勭敤鎴峰悕銆佸瘑鐮�
+            String userName = (String) authentication.getPrincipal();
+            String password = StringUtil.Md5((String) authentication.getCredentials());
+
+            SecurityUser userInfo = (SecurityUser) this.getUserDetailsService().loadUserByUsername(userName);
+
+            boolean isValid = password.equalsIgnoreCase(userInfo.getPassword());
+            // 楠岃瘉瀵嗙爜
+            if (!isValid) {
+                throw new BadCredentialsException("瀵嗙爜閿欒锛�");
+            }
+            return new UsernamePasswordAuthenticationToken(userInfo, password, userInfo.getAuthorities());
+        }
     }
 }

--
Gitblit v1.8.0