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