SpringBoot +Spring Security + thymeleaf + layui简单整合微信公众号

SpringBoot +Spring Security + thymeleaf + layui简单整合微信公众号

程序思路以及资源来源:

wx-java 微信工作号原demo

NatApp内网穿透

layuimini后台模版

微信工作号接口测试号获取

这个是用于本人毕业设计中绑定微信公众号推送消息的目的写的。该项目功能有:【模版消息推送】,【自动回复】,【微信用户详情】这3个功能,但是可以作为一个demo提供给大家,第一次弄公众号方面有问题请多多提出。

首先给看看具体样子:

wx-login.png

wx-index.png

Maven依赖

 
        3.6.0

        1.8
        1.8
        2.7.0
        5.1.46
        1.1.12
        3.1.0
        2.0.1
        5.1.2
        1.2.3
        UTF-8
        UTF-8
        zh_CN
        wechat-mp-demo
    

    
        
            org.springframework.boot
            spring-boot-starter-web
            
                
                    com.fasterxml.jackson.core
                    jackson-databind
                
            
        
        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        
        
            org.thymeleaf.extras
            thymeleaf-extras-springsecurity5
        

        
            org.springframework.boot
            spring-boot-devtools
        


        
            org.springframework.boot
            spring-boot-starter-security
        

        
            org.springframework.security
            spring-security-test
            test
        



        
            com.github.binarywang
            weixin-java-mp
            ${weixin-java-mp.version}
        

        
            org.projectlombok
            lombok
            provided
        

        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        

        
            redis.clients
            jedis
            2.9.0
        

        
            org.springframework.boot
            spring-boot-configuration-processor
            true
        

        
            com.alibaba
            fastjson
            1.2.46
        
        
            net.sf.json-lib
            json-lib
            2.4
            jdk15
        
        
            mysql
            mysql-connector-java
            ${mysql-connector.version}
        
        
            com.alibaba
            druid
            ${druid.version}
        

        
            com.github.pagehelper
            pagehelper
            ${pagehelper.version}
        
        
            com.github.pagehelper
            pagehelper-spring-boot-autoconfigure
            ${pagehelper-auto.version}
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            ${mybatis-starter.version}
        
        
            com.baomidou
            mybatis-plus-boot-starter
            ${mp-starter.version}
        

        
            com.bscommon
            bscommon-base
            1.0.0-SNAPSHOT
        
    

调通WX平台接口配置

注意:认证时候写别导入Security ,因为不配做Security 的话会拦截认证请求

先登录微信平台,可以看到appidappsecret,接口配置信息去可以设置token和配置文件一样,url为认证路径

yml配置如图下(aesKey可以不用,正式公众号才需要)


wx-yml.png

然后具体接口直接引用上方wx-demo的配置和认证接口即可,(该项目就是在该demo上进行修改的),

接口写好后运行程序,然后在微信平台上填写url和token,url为[ip]/wx/portal/[appid],[]为序替换的,

注意该认证端口为80或者为443,在本地测试的话可以用natApp进行内网穿透,有免费的通道可以用

配置好点击体检,上方提示成功就Ok了。

配置Security

应为毕业原因认证方面需要自定义加密(MD5),而Security默认的BCrypt几码。还有为了解决layui 中当session过期post请求不跳转login页面,需要自定义成功/失败处理器,具体如下 如下:

/**
* 配置文件
**/
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled=true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    private static final String KEY = "yljun.com";

    @Autowired
    private UserDetailsService userDetailsService;

    @Autowired
    private LoginValidateAuthenticationProvider loginValidateAuthenticationProvider;

    @Autowired
    private CustomAuthenticationFailure customAuthenticationFailure; //自定义认证失败处理
    @Autowired
    private CustomAuthenticationSuccess customAuthenticationSuccess; //自定义认证认证处理

    @Bean
    public PasswordEncoder passwordEncoder() {
//        return new BCryptPasswordEncoder();   // 使用 BCrypt 加密
        return new CustomPasswordEncoder(); //自定义加密
    }


    /**
     * 自定义配置  wx/** 不拦截微信平台认证
     */
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests().antMatchers("wx/**","error/**", "lib/**","js/**", "api/**", "images/**", "css/**").permitAll() // 都可以访问
                .antMatchers("/h2-console/**").permitAll() // 都可以访问
                .antMatchers("/wxm/**").hasRole("1") // 需要相应的角色才能访问
                .antMatchers("/index", "/", "/welcome").hasRole("1")
                .and()
                .formLogin().failureHandler(customAuthenticationFailure).successHandler(customAuthenticationSuccess)   //基于 Form 表单登录验证
                .loginPage("/login") // 自定义登录界面
                .and().rememberMe().key(KEY); // 启用 remember me
//                .and().exceptionHandling().accessDeniedPage("/403");  // 处理异常,拒绝访问就重定向到 403 页面
        http.csrf().disable(); //关闭跨域保护
        http.headers().frameOptions().sameOrigin(); // 允许来自同一来源的H2 控制台的请求
    }

    /**
     * 认证信息管理
     * @param auth
     * @throws Exception
     */
    @Autowired
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
        auth.userDetailsService(userDetailsService);
        auth.authenticationProvider(loginValidateAuthenticationProvider);
    }


}

具体功能

完成了微信公众号消息推送以及关注用户分页获取,还有简单的公众号自动回复功能。

源码

你可能感兴趣的:(SpringBoot +Spring Security + thymeleaf + layui简单整合微信公众号)