前言

接后面的内容,咱们用zuul + spring security 来实现认证受权。

认证核心


pom.xml

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">    <parent>        <artifactId>zuul-auth</artifactId>        <groupId>com.babaznkj.com</groupId>        <version>1.0-SNAPSHOT</version>    </parent>    <modelVersion>4.0.0</modelVersion>    <artifactId>auth-center</artifactId>    <properties>        <maven.compiler.source>8</maven.compiler.source>        <maven.compiler.target>8</maven.compiler.target>    </properties>    <dependencies>        <dependency>            <groupId>com.babaznkj.com</groupId>            <artifactId>common</artifactId>        </dependency>        <!-- mysql驱动 -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>${mysql.version}</version>        </dependency>        <!-- mybatis启动器 -->        <dependency>            <groupId>org.mybatis.spring.boot</groupId>            <artifactId>mybatis-spring-boot-starter</artifactId>            <version>${mybatis.starter.version}</version>        </dependency>        <!-- alibaba的druid数据库连接池 -->        <dependency>            <groupId>com.alibaba</groupId>            <artifactId>druid-spring-boot-starter</artifactId>            <version>${druid.starter.version}</version>        </dependency>    </dependencies></project>

yml

server:  port: 8090baba:  security:    jwt:      secret: otherpeopledontknowit      url: /auth      header: Authorization      prefix: Bearer      expiration: 86400      language: CNspring:  application:    name: auth  datasource:    name: test    url: jdbc:mysql://localhost:3306/baba_icloud_test1?characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai    username: root    password: carry0610A    # druid 连接池    type: com.alibaba.druid.pool.DruidDataSource    driver-class-name: com.mysql.jdbc.Driver  main:    allow-bean-definition-overriding: true # 这个示意容许咱们笼罩OAuth2放在容器中的bean对象,肯定要配置  redis:    host: 192.168.3.119    port: 6379    password: 123456ribbon:  ReadTimeout: 5000  SocketTimeout: 5000eureka:  client:    service-url:      defaultZone: http://127.0.0.1:8761/eureka/  instance:    prefer-ip-address: falsemanagement:  endpoints:    security:      enabled: false    web:      exposure:        include: "*"mybatis:  mapper-locations: classpath:mapper/*.xml    # mapper映射文件地位  type-aliases-package: shuaicj.example.security.common.entity    # 实体类所在的地位  configuration:    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  • SecurityConfig.java : 这里过滤器能够返回自定义异样。

    package com.baba.security.auth.config;import com.baba.security.auth.filter.JwtUsernamePasswordAuthenticationFilter;import com.baba.security.auth.service.impl.MemberUserDetailsService;import com.baba.security.common.config.JwtProperties;import com.baba.security.common.exception.JWTAuthenticationEntryPoint;import com.baba.security.common.handler.SimpleAccessDeniedHandler;import com.baba.security.common.handler.SimpleAuthenticationEntryPoint;import com.baba.security.common.utils.MD5Util;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.http.HttpMethod;import org.springframework.security.authentication.AuthenticationManager;import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;import org.springframework.security.config.annotation.web.builders.HttpSecurity;import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;import org.springframework.security.config.http.SessionCreationPolicy;import org.springframework.security.crypto.password.PasswordEncoder;import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;import javax.servlet.http.HttpServletResponse;/** * Config login authentication. * * @author shuaicj 2017/10/18 */@EnableWebSecuritypublic class SecurityConfig extends WebSecurityConfigurerAdapter {  @Autowired  private MemberUserDetailsService memberUserDetailsService;  @Autowired  private JwtProperties jwtProperties;  @Bean  public JwtProperties jwtConfig() {      return new JwtProperties();  }  @Autowired  public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {      auth.userDetailsService(memberUserDetailsService).passwordEncoder(new PasswordEncoder() {          /**           * 对明码MD5           * @param rawPassword           * @return           */          @Override          public String encode(CharSequence rawPassword) {              return MD5Util.encode((String) rawPassword);          }          /**           * rawPassword 用户输出的明码           * encodedPassword 数据库DB的明码           * @param rawPassword           * @param encodedPassword           * @return           */          @Override          public boolean matches(CharSequence rawPassword, String encodedPassword) {              String rawPass = MD5Util.encode((String) rawPassword);              boolean result = rawPass.equals(encodedPassword);              return result;          }      });  }  @Override  protected void configure(HttpSecurity httpSecurity) throws Exception {      httpSecurity              .cors().              and()              .csrf().disable()              .logout().disable()//                .formLogin().disable()              .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)              .and()              .exceptionHandling().authenticationEntryPoint(              (req, rsp, e) -> rsp.sendError(HttpServletResponse.SC_UNAUTHORIZED))              .and()//                .addFilterBefore(new WebSecurityCorsFilter(), ChannelProcessingFilter.class) // 保障跨域的过滤器首先触发              .addFilterAfter(new JwtUsernamePasswordAuthenticationFilter(jwtProperties, authenticationManager()),                      UsernamePasswordAuthenticationFilter.class)              .authorizeRequests()              .antMatchers(HttpMethod.OPTIONS).permitAll()              .antMatchers(jwtProperties.getUrl()).permitAll()              .anyRequest().authenticated()//                // 加一句这个              .and()              .exceptionHandling().authenticationEntryPoint(new JWTAuthenticationEntryPoint())              .accessDeniedHandler(new SimpleAccessDeniedHandler()).authenticationEntryPoint(new SimpleAuthenticationEntryPoint());  }  @Bean  @Override  public AuthenticationManager authenticationManagerBean() throws Exception {      return super.authenticationManagerBean();  }}
  • PermissionMapper.java

    package com.baba.security.auth.dao;import com.baba.security.auth.entity.Permission;import com.baba.security.auth.entity.PermissionEntity;import java.util.List;public interface PermissionMapper {  /**   * delete by primary key   *   * @param id primaryKey   * @return deleteCount   */  int deleteByPrimaryKey(Long id);  /**   * insert record to table   *   * @param record the record   * @return insert count   */  int insert(Permission record);  /**   * insert record to table selective   *   * @param record the record   * @return insert count   */  int insertSelective(Permission record);  /**   * select by primary key   *   * @param id primary key   * @return object by primary key   */  Permission selectByPrimaryKey(Long id);  /**   * update record selective   *   * @param record the updated record   * @return update count   */  int updateByPrimaryKeySelective(Permission record);  /**   * update record   *   * @param record the updated record   * @return update count   */  int updateByPrimaryKey(Permission record);  List<Permission> findByAll(Permission permission);  List<PermissionEntity> findPermissionEntity(Permission permission);  List<PermissionEntity> findPermissionByUsername(String username);}
  • RoleMapper.java

    package com.baba.security.auth.dao;import com.baba.security.auth.entity.Role;import java.util.List;public interface RoleMapper {  /**   * delete by primary key   * @param id primaryKey   * @return deleteCount   */  int deleteByPrimaryKey(Integer id);  /**   * insert record to table   * @param record the record   * @return insert count   */  int insert(Role record);  /**   * insert record to table selective   * @param record the record   * @return insert count   */  int insertSelective(Role record);  /**   * select by primary key   * @param id primary key   * @return object by primary key   */  Role selectByPrimaryKey(Integer id);  /**   * update record selective   * @param record the updated record   * @return update count   */  int updateByPrimaryKeySelective(Role record);  /**   * update record   * @param record the updated record   * @return update count   */  int updateByPrimaryKey(Role record);  List<Role> findByAll(Role role);}
  • RolePermissionMapper.java

    package com.baba.security.auth.dao;import com.baba.security.auth.entity.RolePermission;import java.util.List;public interface RolePermissionMapper {  /**   * insert record to table   * @param record the record   * @return insert count   */  int insert(RolePermission record);  /**   * insert record to table selective   * @param record the record   * @return insert count   */  int insertSelective(RolePermission record);  List<RolePermission> findByAll(RolePermission rolePermission);}
  • UserMapper.java

    package com.baba.security.auth.dao;import com.baba.security.auth.entity.User;import java.util.List;public interface UserMapper {  /**   * delete by primary key   *   * @param id primaryKey   * @return deleteCount   */  int deleteByPrimaryKey(Long id);  /**   * insert record to table   *   * @param record the record   * @return insert count   */  int insert(User record);  /**   * insert record to table selective   *   * @param record the record   * @return insert count   */  int insertSelective(User record);  /**   * select by primary key   *   * @param id primary key   * @return object by primary key   */  User selectByPrimaryKey(Long id);  User findByUsername(String username);  /**   * update record selective   *   * @param record the updated record   * @return update count   */  int updateByPrimaryKeySelective(User record);  /**   * update record   *   * @param record the updated record   * @return update count   */  int updateByPrimaryKey(User record);  List<User> findByAll(User user);}
  • Permission.java

    package com.baba.security.auth.entity;import lombok.Getter;import lombok.Setter;import lombok.ToString;import java.io.Serializable;import java.util.Date;@Getter@Setter@ToStringpublic class Permission implements Serializable {  /**   * 主鍵id   */  private Long id;  /**   * 父级权限id   */  private Long pid;  /**   * 中文导航栏名称   */  private String name;  /**   * 英文导航栏名称   */  private String eName;  /**   * 权限标记   */  private String tag;  /**   * 权限值   */  private String value;  /**   * 图标   */  private String icon;  /**   * 权限类型:0->目录;1->菜单;2->按钮(接口绑定权限)   */  private Integer type;  /**   * 申请url   */  private String url;  /**   * 启用状态;0 失常 1删除   */  private Integer status;  /**   * 排序   */  private Integer sort;  /**   * 创立工夫   */  private Date createTime;  /**   * 更新工夫   */  private Date updateTime;  /**   * 创建人   */  private String createdBy;  /**   * 批改人   */  private String updatedBy;  private static final long serialVersionUID = 1L;}
  • PermissionEntity.java

    package com.baba.security.auth.entity;import lombok.Data;@Datapublic class PermissionEntity {  private Integer id;  // 权限名称  private String permName;  // 权限标识  private String permTag;  // 申请url  private String url;}
  • Role.java

    package com.baba.security.auth.entity;import lombok.Getter;import lombok.Setter;import lombok.ToString;import java.io.Serializable;import java.util.Date;@Getter@Setter@ToStringpublic class Role implements Serializable {  private Integer id;  /**  * 用户id  */  private Long userId;  /**  * 角色名称  */  private String roleName;  /**  * 角色形容  */  private String roleDesc;  /**  * 创立工夫  */  private Date createTime;  /**  * 更新工夫  */  private Date updateTime;  /**  * 创建人  */  private String createdBy;  /**  * 批改人  */  private String updatedBy;  private static final long serialVersionUID = 1L;}
  • RolePermission.java

    package com.baba.security.auth.entity;import lombok.Getter;import lombok.Setter;import lombok.ToString;import java.io.Serializable;@Getter@Setter@ToStringpublic class RolePermission implements Serializable {  private Integer roleId;  private Integer permId;  private static final long serialVersionUID = 1L;}
  • User: 实现UserDetails

    package com.baba.security.auth.entity;import lombok.Getter;import lombok.Setter;import lombok.ToString;import org.springframework.security.core.GrantedAuthority;import org.springframework.security.core.userdetails.UserDetails;import java.io.Serializable;import java.util.ArrayList;import java.util.Collection;import java.util.Date;import java.util.List;@Getter@Setter@ToStringpublic class User implements UserDetails, Serializable {  /**   * 主键id   */  private Long id;  /**   * 子用户ID   */  private Long pid;  /**   * 租户id   */  private Long tenantId;  /**   * 名称   */  private String username;  /**   * 明码   */  private String password;  /**   * 昵称   */  private String nick;  /**   * 性别(男/女)   */  private int gender;  /**   * 年龄   */  private Integer age;  /**   * 头像地址   */  private String headImg;  /**   * 电话号码   */  private String phone;  /**   * 0:禁用/1:启用   */  private Integer state;  /**   * 友盟推送认证token   */  private String pushToken;  /**   * app端盐值   */  private String appSalt;  /**   * web端盐值   */  private String webSalt;  /**   * 以后账户是否可用   */  private boolean enabled= true;  /**   * 以后账户是否过期   */  private boolean accountNonExpired = true;  /**   * 以后账户是否锁定   */  private boolean accountNonLocked= true;  /**   * 以后账户凭证是否过期   */  private boolean credentialsNonExpired= true;  /**   * 创立工夫   */  private Date createTime;  /**   * 更新工夫   */  private Date updateTime;  /**   * 创建人   */  private String createBy;  /**   * 批改人   */  private String updateBy;  /**   * 秘钥   */  private String secretKey;  private static final long serialVersionUID = 1L;  /**   * 权限列表   */  private List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();  public Collection<? extends GrantedAuthority> getAuthorities() {      return authorities;  }  public void setAuthorities(List<GrantedAuthority> authorities) {      this.authorities = authorities;  }}
  • JwtUsernamePasswordAuthenticationFilter.java :这里也要放行【config.getUrl()】登录接口,胜利和失败的办法调用。token的生成,动静颜值解决。

    package com.baba.security.auth.filter;import com.baba.security.auth.dao.UserMapper;import com.baba.security.auth.entity.User;import com.baba.security.common.config.JwtProperties;import com.baba.security.common.constant.RedisConstant;import com.baba.security.common.enums.ResultCode;import com.baba.security.common.exception.DefinitException;import com.baba.security.common.utils.JwtUtils;import com.baba.security.common.utils.RedisUtils;import com.baba.security.common.utils.SaltUtils;import com.fasterxml.jackson.databind.ObjectMapper;import org.apache.commons.lang.StringUtils;import org.springframework.context.ApplicationContext;import org.springframework.http.MediaType;import org.springframework.security.authentication.AuthenticationManager;import org.springframework.security.authentication.InternalAuthenticationServiceException;import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;import org.springframework.security.core.Authentication;import org.springframework.security.core.AuthenticationException;import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter;import org.springframework.security.web.util.matcher.AntPathRequestMatcher;import org.springframework.web.context.support.WebApplicationContextUtils;import org.springframework.web.servlet.HandlerExceptionResolver;import javax.servlet.FilterChain;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.Collections;import java.util.HashMap;import java.util.concurrent.TimeUnit;/** * Authenticate the request to url /login by POST with json body '{ username, password }'. * If successful, response the client with header 'Authorization: Bearer jwt-token'. * * @author shuaicj 2017/10/18 */public class JwtUsernamePasswordAuthenticationFilter extends AbstractAuthenticationProcessingFilter {  //    private final JwtAuthenticationConfig config;  private final JwtProperties config;  private final ObjectMapper mapper;  public JwtUsernamePasswordAuthenticationFilter(JwtProperties config, AuthenticationManager authManager) {      super(new AntPathRequestMatcher(config.getUrl(), "POST"));      setAuthenticationManager(authManager);      this.config = config;      this.mapper = new ObjectMapper();  }  // 接管并解析用户凭证  @Override  public Authentication attemptAuthentication(HttpServletRequest req, HttpServletResponse rsp)          throws AuthenticationException, IOException {      try {          User user = mapper.readValue(req.getInputStream(), User.class);          return getAuthenticationManager().authenticate(                  new UsernamePasswordAuthenticationToken(                          user.getUsername(),                          user.getPassword(),                          Collections.emptyList()                  )          );      } catch (InternalAuthenticationServiceException e) {          ServletContext context = req.getServletContext();          ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);          HandlerExceptionResolver resolver = ctx.getBean("handlerExceptionResolver", HandlerExceptionResolver.class);          resolver.resolveException(req, rsp, null, new DefinitException(ResultCode.USER_NOT_FOUND));          return null;//            throw new DefinitException(ResultCode.USER_NOT_FOUND);      }  }  // 用户胜利登录后,这个办法会被调用,咱们在这个办法里生成token  @Override  protected void successfulAuthentication(HttpServletRequest req, HttpServletResponse rsp, FilterChain chain,                                          Authentication auth) throws IOException {      User user = (User) auth.getPrincipal();      // filter过滤器应用Autowired注入Bean为null      ServletContext context = req.getServletContext();      ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);      RedisUtils redisUtil = ctx.getBean(RedisUtils.class);      UserMapper userMapper = ctx.getBean(UserMapper.class);      User updateSalt = new User();      updateSalt.setId(user.getId());      //1.生成随机盐      String salt = SaltUtils.getSalt(8);      String userAgent = req.getHeader("user-agent").toLowerCase();      String language = req.getHeader("language");      if (userAgent.indexOf("micromessenger") != -1) {          //微信      } else if (userAgent.indexOf("android") != -1              || userAgent.indexOf("iphone") != -1 || userAgent.indexOf("ipad") != -1 || userAgent.indexOf("ipod") != -1) {          //安卓 或者 苹果          //2.将随机盐保留到Redis          redisUtil.setEx(RedisConstant.PREFIX_APP + user.getId(), salt, 1, TimeUnit.DAYS);          updateSalt.setAppSalt(salt);      } else {          //电脑          //2.将随机盐保留到Redis          redisUtil.setEx(RedisConstant.PREFIX_WEB + user.getId(), salt, 1, TimeUnit.DAYS);          updateSalt.setWebSalt(salt);      }      //3.更新Mysql随机盐值      userMapper.updateByPrimaryKeySelective(updateSalt);      user.setSecretKey(salt);      if (StringUtils.isEmpty(language)) {          language = config.getLanguage();      }      String token = JwtUtils.generateJsonWebToken(auth, salt, language);      redisUtil.setEx(token, user.getId().toString(), 2, TimeUnit.HOURS);      rsp.addHeader(config.getHeader(), config.getPrefix() + " " + token);      HashMap<String, Object> map = new HashMap<>(2);      map.put("code", ResultCode.USER_AUTH_SUCCESS.getCode());      map.put("msg", ResultCode.USER_AUTH_SUCCESS.getMessage());      rsp.setStatus(HttpServletResponse.SC_OK);      rsp.setCharacterEncoding("utf-8");      rsp.setContentType(MediaType.APPLICATION_JSON_VALUE);      rsp.getWriter().write(new ObjectMapper().writeValueAsString(map));  }  @Override  protected void unsuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, AuthenticationException failed) throws IOException, ServletException {//        response.getWriter().write("authentication failed, reason: " + failed.getMessage());      System.out.println(failed.getMessage());      ServletContext context = request.getServletContext();      ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);      HandlerExceptionResolver resolver = ctx.getBean("handlerExceptionResolver", HandlerExceptionResolver.class);      resolver.resolveException(request, response, null, new DefinitException(ResultCode.LOGIN_METHOD_WROND));  }}
  • MemberUserDetailsService.java : 查问的tag必须拼接前缀"ROLE_",而不能在数据库中增加。

    package com.baba.security.auth.service.impl;import com.baba.security.auth.entity.PermissionEntity;import com.baba.security.auth.entity.User;import com.baba.security.auth.service.PermissionService;import com.baba.security.auth.service.UserService;import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.annotation.Autowired;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;import org.springframework.stereotype.Component;import java.util.ArrayList;import java.util.List;/** * @ClassName MemberUserDetailsService * @Author wulongbo * @Version V1.0 **/@Component@Slf4jpublic class MemberUserDetailsService implements UserDetailsService {  @Autowired  private UserService userService;  @Autowired  private PermissionService permissionService;  /**   * loadUserByUserName   *   * @param username   * @return   * @throws UsernameNotFoundException   */  @Override  public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {      // 1.依据该用户名称查问在数据库中是否存在      User userEntity = userService.findByUsername(username);      if (userEntity == null) {          return null;      }      // 2.查问对应的用户权限      List<PermissionEntity> listPermission = permissionService.findPermissionByUsername(username);      List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();      listPermission.forEach(user -> {          authorities.add(new SimpleGrantedAuthority("ROLE_" + user.getPermTag()));      });      // 3.将该权限增加到security      userEntity.setAuthorities(authorities);      return userEntity;  }}
  • PermissionServiceImpl.java

    package com.baba.security.auth.service.impl;import com.baba.security.auth.dao.PermissionMapper;import com.baba.security.auth.entity.Permission;import com.baba.security.auth.entity.PermissionEntity;import com.baba.security.auth.service.PermissionService;import org.springframework.stereotype.Service;import javax.annotation.Resource;import java.util.List;@Servicepublic class PermissionServiceImpl implements PermissionService {  @Resource  private PermissionMapper permissionMapper;  @Override  public int deleteByPrimaryKey(Long id) {      return permissionMapper.deleteByPrimaryKey(id);  }  @Override  public int insert(Permission record) {      return permissionMapper.insert(record);  }  @Override  public int insertSelective(Permission record) {      return permissionMapper.insertSelective(record);  }  @Override  public Permission selectByPrimaryKey(Long id) {      return permissionMapper.selectByPrimaryKey(id);  }  @Override  public int updateByPrimaryKeySelective(Permission record) {      return permissionMapper.updateByPrimaryKeySelective(record);  }  @Override  public int updateByPrimaryKey(Permission record) {      return permissionMapper.updateByPrimaryKey(record);  }  @Override  public List<Permission> findByAll(Permission permission) {      return permissionMapper.findByAll(permission);  }  @Override  public List<PermissionEntity> findPermissionEntity(Permission permission) {      return permissionMapper.findPermissionEntity(permission);  }  @Override  public List<PermissionEntity> findPermissionByUsername(String username) {      return permissionMapper.findPermissionByUsername(username);  }}
  1. UserServiceImpl.java

    package com.baba.security.auth.service.impl;import com.baba.security.auth.dao.UserMapper;import com.baba.security.auth.entity.User;import com.baba.security.auth.service.UserService;import org.springframework.stereotype.Service;import javax.annotation.Resource;import java.util.List;@Servicepublic class UserServiceImpl implements UserService { @Resource private UserMapper userMapper; @Override public int deleteByPrimaryKey(Long id) {     return userMapper.deleteByPrimaryKey(id); } @Override public int insert(User record) {     return userMapper.insert(record); } @Override public int insertSelective(User record) {     return userMapper.insertSelective(record); } @Override public User selectByPrimaryKey(Long id) {     return userMapper.selectByPrimaryKey(id); } @Override public int updateByPrimaryKeySelective(User record) {     return userMapper.updateByPrimaryKeySelective(record); } @Override public int updateByPrimaryKey(User record) {     return userMapper.updateByPrimaryKey(record); } @Override public List<User> findByAll(User user) {     return userMapper.findByAll(user); } @Override public User findByUsername(String username) {     return userMapper.findByUsername(username); }}
  • PermissionService.java

    package com.baba.security.auth.service;import com.baba.security.auth.entity.Permission;import com.baba.security.auth.entity.PermissionEntity;import java.util.List;public interface PermissionService {  int deleteByPrimaryKey(Long id);  int insert(Permission record);  int insertSelective(Permission record);  Permission selectByPrimaryKey(Long id);  int updateByPrimaryKeySelective(Permission record);  int updateByPrimaryKey(Permission record);  List<Permission> findByAll(Permission permission);  List<PermissionEntity> findPermissionEntity(Permission permission);  List<PermissionEntity> findPermissionByUsername(String username);}
  • UserService.java

    package com.baba.security.auth.service;import com.baba.security.auth.entity.User;import java.util.List;public interface UserService {  int deleteByPrimaryKey(Long id);  int insert(User record);  int insertSelective(User record);  User selectByPrimaryKey(Long id);  int updateByPrimaryKeySelective(User record);  int updateByPrimaryKey(User record);  List<User> findByAll(User user);  User findByUsername(String username);}
  • PermissionMapper.xml

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.baba.security.auth.dao.PermissionMapper">  <resultMap id="BaseResultMap" type="com.baba.security.auth.entity.Permission">      <!--@mbg.generated-->      <!--@Table tbl_permission-->      <id column="id" jdbcType="BIGINT" property="id"/>      <result column="pid" jdbcType="BIGINT" property="pid"/>      <result column="name" jdbcType="VARCHAR" property="name"/>      <result column="e_name" jdbcType="VARCHAR" property="eName"/>      <result column="tag" jdbcType="VARCHAR" property="tag"/>      <result column="value" jdbcType="VARCHAR" property="value"/>      <result column="icon" jdbcType="VARCHAR" property="icon"/>      <result column="type" jdbcType="INTEGER" property="type"/>      <result column="url" jdbcType="VARCHAR" property="url"/>      <result column="status" jdbcType="INTEGER" property="status"/>      <result column="sort" jdbcType="INTEGER" property="sort"/>      <result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>      <result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>      <result column="created_by" jdbcType="VARCHAR" property="createdBy"/>      <result column="updated_by" jdbcType="VARCHAR" property="updatedBy"/>  </resultMap>  <resultMap id="PermissionEntityResultMap" type="com.baba.security.auth.entity.PermissionEntity">      <id column="id" jdbcType="BIGINT" property="id"/>      <result column="permName" jdbcType="VARCHAR" property="permName"/>      <result column="permTag" jdbcType="VARCHAR" property="permTag"/>      <result column="url" jdbcType="VARCHAR" property="url"/>  </resultMap>  <select id="findPermissionByUsername" parameterType="java.lang.String" resultMap="PermissionEntityResultMap">      SELECT          permission.id,permission.`name` permName,permission.tag permTag,permission.url      FROM          tbl_user          USER INNER JOIN tbl_user_role user_role ON USER.id = user_role.user_id          INNER JOIN tbl_role_permission role_permission ON user_role.role_id = role_permission.role_id          INNER JOIN tbl_permission permission ON role_permission.perm_id = permission.id      WHERE          USER.phone = #{username,jdbcType=VARCHAR} AND permission.type=2  </select>  <sql id="Base_Column_List">      <!--@mbg.generated-->      id, pid, `name`, e_name, tag, `value`, icon, `type`, url, `status`, sort,      create_time, update_time, created_by, updated_by  </sql>  <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">      <!--@mbg.generated-->      select      <include refid="Base_Column_List"/>      from tbl_permission      where id = #{id,jdbcType=BIGINT}  </select>  <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">      <!--@mbg.generated-->      delete from tbl_permission      where id = #{id,jdbcType=BIGINT}  </delete>  <insert id="insert" keyColumn="id" keyProperty="id"          parameterType="com.baba.security.auth.entity.Permission" useGeneratedKeys="true">      <!--@mbg.generated-->      insert into tbl_permission (pid, `name`,      e_name, tag, `value`,      icon, `type`, url, `status`,      sort, create_time, update_time,      created_by, updated_by)      values (#{pid,jdbcType=BIGINT},  #{name,jdbcType=VARCHAR},      #{eName,jdbcType=VARCHAR}, #{tag,jdbcType=VARCHAR}, #{value,jdbcType=VARCHAR},      #{icon,jdbcType=VARCHAR}, #{type,jdbcType=INTEGER}, #{url,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER},      #{sort,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP},      #{createdBy,jdbcType=VARCHAR}, #{updatedBy,jdbcType=VARCHAR})  </insert>  <insert id="insertSelective" keyColumn="id" keyProperty="id"          parameterType="com.baba.security.auth.entity.Permission" useGeneratedKeys="true">      <!--@mbg.generated-->      insert into tbl_permission      <trim prefix="(" suffix=")" suffixOverrides=",">          <if test="pid != null">              pid,          </if>          <if test="name != null">              `name`,          </if>          <if test="eName != null">              e_name,          </if>          <if test="tag != null">              tag,          </if>          <if test="value != null">              `value`,          </if>          <if test="icon != null">              icon,          </if>          <if test="type != null">              `type`,          </if>          <if test="url != null">              url,          </if>          <if test="status != null">              `status`,          </if>          <if test="sort != null">              sort,          </if>          <if test="createTime != null">              create_time,          </if>          <if test="updateTime != null">              update_time,          </if>          <if test="createdBy != null">              created_by,          </if>          <if test="updatedBy != null">              updated_by,          </if>      </trim>      <trim prefix="values (" suffix=")" suffixOverrides=",">          <if test="pid != null">              #{pid,jdbcType=BIGINT},          </if>          <if test="name != null">              #{name,jdbcType=VARCHAR},          </if>          <if test="eName != null">              #{eName,jdbcType=VARCHAR},          </if>          <if test="tag != null">              #{tag,jdbcType=VARCHAR},          </if>          <if test="value != null">              #{value,jdbcType=VARCHAR},          </if>          <if test="icon != null">              #{icon,jdbcType=VARCHAR},          </if>          <if test="type != null">              #{type,jdbcType=INTEGER},          </if>          <if test="url != null">              #{url,jdbcType=VARCHAR},          </if>          <if test="status != null">              #{status,jdbcType=INTEGER},          </if>          <if test="sort != null">              #{sort,jdbcType=INTEGER},          </if>          <if test="createTime != null">              #{createTime,jdbcType=TIMESTAMP},          </if>          <if test="updateTime != null">              #{updateTime,jdbcType=TIMESTAMP},          </if>          <if test="createdBy != null">              #{createdBy,jdbcType=VARCHAR},          </if>          <if test="updatedBy != null">              #{updatedBy,jdbcType=VARCHAR},          </if>      </trim>  </insert>  <update id="updateByPrimaryKeySelective" parameterType="com.baba.security.auth.entity.Permission">      <!--@mbg.generated-->      update tbl_permission      <set>          <if test="pid != null">              pid = #{pid,jdbcType=BIGINT},          </if>          <if test="name != null">              `name` = #{name,jdbcType=VARCHAR},          </if>          <if test="eName != null">              e_name = #{eName,jdbcType=VARCHAR},          </if>          <if test="tag != null">              tag = #{tag,jdbcType=VARCHAR},          </if>          <if test="value != null">              `value` = #{value,jdbcType=VARCHAR},          </if>          <if test="icon != null">              icon = #{icon,jdbcType=VARCHAR},          </if>          <if test="type != null">              `type` = #{type,jdbcType=INTEGER},          </if>          <if test="url != null">              url = #{url,jdbcType=VARCHAR},          </if>          <if test="status != null">              `status` = #{status,jdbcType=INTEGER},          </if>          <if test="sort != null">              sort = #{sort,jdbcType=INTEGER},          </if>          <if test="createTime != null">              create_time = #{createTime,jdbcType=TIMESTAMP},          </if>          <if test="updateTime != null">              update_time = #{updateTime,jdbcType=TIMESTAMP},          </if>          <if test="createdBy != null">              created_by = #{createdBy,jdbcType=VARCHAR},          </if>          <if test="updatedBy != null">              updated_by = #{updatedBy,jdbcType=VARCHAR},          </if>      </set>      where id = #{id,jdbcType=BIGINT}  </update>  <update id="updateByPrimaryKey" parameterType="com.baba.security.auth.entity.Permission">      <!--@mbg.generated-->      update tbl_permission      set pid = #{pid,jdbcType=BIGINT},      `name` = #{name,jdbcType=VARCHAR},      e_name = #{eName,jdbcType=VARCHAR},      tag = #{tag,jdbcType=VARCHAR},      `value` = #{value,jdbcType=VARCHAR},      icon = #{icon,jdbcType=VARCHAR},      `type` = #{type,jdbcType=INTEGER},      url = #{url,jdbcType=VARCHAR},      `status` = #{status,jdbcType=INTEGER},      sort = #{sort,jdbcType=INTEGER},      create_time = #{createTime,jdbcType=TIMESTAMP},      update_time = #{updateTime,jdbcType=TIMESTAMP},      created_by = #{createdBy,jdbcType=VARCHAR},      updated_by = #{updatedBy,jdbcType=VARCHAR}      where id = #{id,jdbcType=BIGINT}  </update>  <select id="findByAll" resultMap="BaseResultMap">      <!--@mbg.generated-->      select      <include refid="Base_Column_List"/>      from tbl_permission      <where>          <if test="id != null">              and id=#{id,jdbcType=BIGINT}          </if>          <if test="pid != null">              and pid=#{pid,jdbcType=BIGINT}          </if>          <if test="name != null">              and `name`=#{name,jdbcType=VARCHAR}          </if>          <if test="eName != null">              and e_name=#{eName,jdbcType=VARCHAR}          </if>          <if test="tag != null">              and tag=#{tag,jdbcType=VARCHAR}          </if>          <if test="value != null">              and `value`=#{value,jdbcType=VARCHAR}          </if>          <if test="icon != null">              and icon=#{icon,jdbcType=VARCHAR}          </if>          <if test="type != null">              and `type`=#{type,jdbcType=INTEGER}          </if>          <if test="url != null">              and url=#{url,jdbcType=VARCHAR}          </if>          <if test="status != null">              and `status`=#{status,jdbcType=INTEGER}          </if>          <if test="sort != null">              and sort=#{sort,jdbcType=INTEGER}          </if>          <if test="createTime != null">              and create_time=#{createTime,jdbcType=TIMESTAMP}          </if>          <if test="updateTime != null">              and update_time=#{updateTime,jdbcType=TIMESTAMP}          </if>          <if test="createdBy != null">              and created_by=#{createdBy,jdbcType=VARCHAR}          </if>          <if test="updatedBy != null">              and updated_by=#{updatedBy,jdbcType=VARCHAR}          </if>      </where>  </select>  <select id="findPermissionEntity" resultMap="PermissionEntityResultMap">      select      id,      `name` permName,      tag permTag,      url      from tbl_permission      <where>          <if test="id != null">              and id=#{id,jdbcType=BIGINT}          </if>          <if test="pid != null">              and pid=#{pid,jdbcType=BIGINT}          </if>          <if test="name != null">              and `name`=#{name,jdbcType=VARCHAR}          </if>          <if test="eName != null">              and e_name=#{eName,jdbcType=VARCHAR}          </if>          <if test="tag != null">              and tag=#{tag,jdbcType=VARCHAR}          </if>          <if test="value != null">              and `value`=#{value,jdbcType=VARCHAR}          </if>          <if test="icon != null">              and icon=#{icon,jdbcType=VARCHAR}          </if>          <if test="type != null">              and `type`=#{type,jdbcType=INTEGER}          </if>          <if test="url != null">              and url=#{url,jdbcType=VARCHAR}          </if>          <if test="status != null">              and `status`=#{status,jdbcType=INTEGER}          </if>          <if test="sort != null">              and sort=#{sort,jdbcType=INTEGER}          </if>          <if test="createTime != null">              and create_time=#{createTime,jdbcType=TIMESTAMP}          </if>          <if test="updateTime != null">              and update_time=#{updateTime,jdbcType=TIMESTAMP}          </if>          <if test="createdBy != null">              and created_by=#{createdBy,jdbcType=VARCHAR}          </if>          <if test="updatedBy != null">              and updated_by=#{updatedBy,jdbcType=VARCHAR}          </if>      </where>  </select></mapper>
  • RoleMapper.xml

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.baba.security.auth.dao.RoleMapper"><resultMap id="BaseResultMap" type="com.baba.security.auth.entity.Role">  <!--@mbg.generated-->  <!--@Table tbl_role-->  <id column="id" jdbcType="INTEGER" property="id" />  <result column="user_id" jdbcType="BIGINT" property="userId" />  <result column="role_name" jdbcType="VARCHAR" property="roleName" />  <result column="role_desc" jdbcType="VARCHAR" property="roleDesc" />  <result column="create_time" jdbcType="DATE" property="createTime" />  <result column="update_time" jdbcType="DATE" property="updateTime" />  <result column="created_by" jdbcType="VARCHAR" property="createdBy" />  <result column="updated_by" jdbcType="VARCHAR" property="updatedBy" /></resultMap><sql id="Base_Column_List">  <!--@mbg.generated-->  id, user_id, role_name, role_desc, create_time, update_time, created_by, updated_by</sql><select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">  <!--@mbg.generated-->  select   <include refid="Base_Column_List" />  from tbl_role  where id = #{id,jdbcType=INTEGER}</select><delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">  <!--@mbg.generated-->  delete from tbl_role  where id = #{id,jdbcType=INTEGER}</delete><insert id="insert" parameterType="com.baba.security.auth.entity.Role">  <!--@mbg.generated-->  insert into tbl_role (id, user_id, role_name,     role_desc, create_time, update_time,     created_by, updated_by)  values (#{id,jdbcType=INTEGER}, #{userId,jdbcType=BIGINT}, #{roleName,jdbcType=VARCHAR},     #{roleDesc,jdbcType=VARCHAR}, #{createTime,jdbcType=DATE}, #{updateTime,jdbcType=DATE},     #{createdBy,jdbcType=VARCHAR}, #{updatedBy,jdbcType=VARCHAR})</insert><insert id="insertSelective" parameterType="com.baba.security.auth.entity.Role">  <!--@mbg.generated-->  insert into tbl_role  <trim prefix="(" suffix=")" suffixOverrides=",">    <if test="id != null">      id,    </if>    <if test="userId != null">      user_id,    </if>    <if test="roleName != null">      role_name,    </if>    <if test="roleDesc != null">      role_desc,    </if>    <if test="createTime != null">      create_time,    </if>    <if test="updateTime != null">      update_time,    </if>    <if test="createdBy != null">      created_by,    </if>    <if test="updatedBy != null">      updated_by,    </if>  </trim>  <trim prefix="values (" suffix=")" suffixOverrides=",">    <if test="id != null">      #{id,jdbcType=INTEGER},    </if>    <if test="userId != null">      #{userId,jdbcType=BIGINT},    </if>    <if test="roleName != null">      #{roleName,jdbcType=VARCHAR},    </if>    <if test="roleDesc != null">      #{roleDesc,jdbcType=VARCHAR},    </if>    <if test="createTime != null">      #{createTime,jdbcType=DATE},    </if>    <if test="updateTime != null">      #{updateTime,jdbcType=DATE},    </if>    <if test="createdBy != null">      #{createdBy,jdbcType=VARCHAR},    </if>    <if test="updatedBy != null">      #{updatedBy,jdbcType=VARCHAR},    </if>  </trim></insert><update id="updateByPrimaryKeySelective" parameterType="com.baba.security.auth.entity.Role">  <!--@mbg.generated-->  update tbl_role  <set>    <if test="userId != null">      user_id = #{userId,jdbcType=BIGINT},    </if>    <if test="roleName != null">      role_name = #{roleName,jdbcType=VARCHAR},    </if>    <if test="roleDesc != null">      role_desc = #{roleDesc,jdbcType=VARCHAR},    </if>    <if test="createTime != null">      create_time = #{createTime,jdbcType=DATE},    </if>    <if test="updateTime != null">      update_time = #{updateTime,jdbcType=DATE},    </if>    <if test="createdBy != null">      created_by = #{createdBy,jdbcType=VARCHAR},    </if>    <if test="updatedBy != null">      updated_by = #{updatedBy,jdbcType=VARCHAR},    </if>  </set>  where id = #{id,jdbcType=INTEGER}</update><update id="updateByPrimaryKey" parameterType="com.baba.security.auth.entity.Role">  <!--@mbg.generated-->  update tbl_role  set user_id = #{userId,jdbcType=BIGINT},    role_name = #{roleName,jdbcType=VARCHAR},    role_desc = #{roleDesc,jdbcType=VARCHAR},    create_time = #{createTime,jdbcType=DATE},    update_time = #{updateTime,jdbcType=DATE},    created_by = #{createdBy,jdbcType=VARCHAR},    updated_by = #{updatedBy,jdbcType=VARCHAR}  where id = #{id,jdbcType=INTEGER}</update><select id="findByAll" resultMap="BaseResultMap">      <!--@mbg.generated-->      select      <include refid="Base_Column_List"/>      from tbl_role      <where>          <if test="id != null">              and id=#{id,jdbcType=INTEGER}          </if>          <if test="userId != null">              and user_id=#{userId,jdbcType=BIGINT}          </if>          <if test="roleName != null">              and role_name=#{roleName,jdbcType=VARCHAR}          </if>          <if test="roleDesc != null">              and role_desc=#{roleDesc,jdbcType=VARCHAR}          </if>          <if test="createTime != null">              and create_time=#{createTime,jdbcType=DATE}          </if>          <if test="updateTime != null">              and update_time=#{updateTime,jdbcType=DATE}          </if>          <if test="createdBy != null">              and created_by=#{createdBy,jdbcType=VARCHAR}          </if>          <if test="updatedBy != null">              and updated_by=#{updatedBy,jdbcType=VARCHAR}          </if>      </where>  </select></mapper>
  • RolePermissionMapper.xml

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.baba.security.auth.dao.RolePermissionMapper"><resultMap id="BaseResultMap" type="com.baba.security.auth.entity.RolePermission">  <!--@mbg.generated-->  <!--@Table tbl_role_permission-->  <result column="role_id" jdbcType="INTEGER" property="roleId" />  <result column="perm_id" jdbcType="INTEGER" property="permId" /></resultMap><sql id="Base_Column_List">  <!--@mbg.generated-->  role_id, perm_id</sql><insert id="insert" parameterType="com.baba.security.auth.entity.RolePermission">  <!--@mbg.generated-->  insert into tbl_role_permission (role_id, perm_id)  values (#{roleId,jdbcType=INTEGER}, #{permId,jdbcType=INTEGER})</insert><insert id="insertSelective" parameterType="com.baba.security.auth.entity.RolePermission">  <!--@mbg.generated-->  insert into tbl_role_permission  <trim prefix="(" suffix=")" suffixOverrides=",">    <if test="roleId != null">      role_id,    </if>    <if test="permId != null">      perm_id,    </if>  </trim>  <trim prefix="values (" suffix=")" suffixOverrides=",">    <if test="roleId != null">      #{roleId,jdbcType=INTEGER},    </if>    <if test="permId != null">      #{permId,jdbcType=INTEGER},    </if>  </trim></insert><select id="findByAll" resultMap="BaseResultMap">      <!--@mbg.generated-->      select      <include refid="Base_Column_List"/>      from tbl_role_permission      <where>          <if test="roleId != null">              and role_id=#{roleId,jdbcType=INTEGER}          </if>          <if test="permId != null">              and perm_id=#{permId,jdbcType=INTEGER}          </if>      </where>  </select></mapper>
  • UserMapper.xml

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.baba.security.auth.dao.UserMapper"><resultMap id="BaseResultMap" type="com.baba.security.auth.entity.User">  <!--@mbg.generated-->  <!--@Table tbl_user-->  <id column="id" jdbcType="BIGINT" property="id" />  <result column="pid" jdbcType="BIGINT" property="pid" />  <result column="tenant_id" jdbcType="BIGINT" property="tenantId" />  <result column="username" jdbcType="VARCHAR" property="username" />  <result column="password" jdbcType="VARCHAR" property="password" />  <result column="nick" jdbcType="VARCHAR" property="nick" />  <result column="gender" jdbcType="INTEGER" property="gender" />  <result column="age" jdbcType="INTEGER" property="age" />  <result column="head_img" jdbcType="VARCHAR" property="headImg" />  <result column="phone" jdbcType="VARCHAR" property="phone" />  <result column="state" jdbcType="INTEGER" property="state" />  <result column="push_token" jdbcType="VARCHAR" property="pushToken" />  <result column="app_salt" jdbcType="VARCHAR" property="appSalt" />  <result column="web_salt" jdbcType="VARCHAR" property="webSalt" />  <result column="enabled" jdbcType="BOOLEAN" property="enabled" />  <result column="accountNonExpired" jdbcType="BOOLEAN" property="accountNonExpired" />  <result column="accountNonLocked" jdbcType="BOOLEAN" property="accountNonLocked" />  <result column="credentialsNonExpired" jdbcType="BOOLEAN" property="credentialsNonExpired" />  <result column="create_time" jdbcType="DATE" property="createTime" />  <result column="update_time" jdbcType="DATE" property="updateTime" />  <result column="create_by" jdbcType="VARCHAR" property="createBy" />  <result column="update_by" jdbcType="VARCHAR" property="updateBy" /></resultMap><sql id="Base_Column_List">  <!--@mbg.generated-->  id, pid, tenant_id, username, `password`, nick, gender, age, head_img, phone, `state`,  push_token, app_salt, web_salt, enabled, accountNonExpired, accountNonLocked, credentialsNonExpired,  create_time, update_time, create_by, update_by</sql><select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">  <!--@mbg.generated-->  select  <include refid="Base_Column_List" />  from tbl_user  where id = #{id,jdbcType=BIGINT}</select><select id="findByUsername" parameterType="java.lang.String" resultMap="BaseResultMap">  select  <include refid="Base_Column_List" />  from tbl_user  where phone = #{username,jdbcType=VARCHAR}</select><delete id="deleteByPrimaryKey" parameterType="java.lang.Long">  <!--@mbg.generated-->  delete from tbl_user  where id = #{id,jdbcType=BIGINT}</delete><insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.baba.security.auth.entity.User" useGeneratedKeys="true">  <!--@mbg.generated-->  insert into tbl_user (pid, tenant_id, username,    `password`, nick, gender,    age, head_img, phone,    `state`, push_token, app_salt,    web_salt, enabled, accountNonExpired,    accountNonLocked, credentialsNonExpired,    create_time, update_time, create_by,    update_by)  values (#{pid,jdbcType=BIGINT}, #{tenantId,jdbcType=BIGINT}, #{username,jdbcType=VARCHAR},    #{password,jdbcType=VARCHAR}, #{nick,jdbcType=VARCHAR}, #{gender,jdbcType=INTEGER},    #{age,jdbcType=INTEGER}, #{headImg,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR},    #{state,jdbcType=INTEGER}, #{pushToken,jdbcType=VARCHAR}, #{appSalt,jdbcType=VARCHAR},    #{webSalt,jdbcType=VARCHAR}, #{enabled,jdbcType=BOOLEAN}, #{accountNonExpired,jdbcType=BOOLEAN},    #{accountNonLocked,jdbcType=BOOLEAN}, #{credentialsNonExpired,jdbcType=BOOLEAN},    #{createTime,jdbcType=DATE}, #{updateTime,jdbcType=DATE}, #{createBy,jdbcType=VARCHAR},    #{updateBy,jdbcType=VARCHAR})</insert><insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.baba.security.auth.entity.User" useGeneratedKeys="true">  <!--@mbg.generated-->  insert into tbl_user  <trim prefix="(" suffix=")" suffixOverrides=",">    <if test="pid != null">      pid,    </if>    <if test="tenantId != null">      tenant_id,    </if>    <if test="username != null">      username,    </if>    <if test="password != null">      `password`,    </if>    <if test="nick != null">      nick,    </if>    <if test="gender != null">      gender,    </if>    <if test="age != null">      age,    </if>    <if test="headImg != null">      head_img,    </if>    <if test="phone != null">      phone,    </if>    <if test="state != null">      `state`,    </if>    <if test="pushToken != null">      push_token,    </if>    <if test="appSalt != null">      app_salt,    </if>    <if test="webSalt != null">      web_salt,    </if>    <if test="enabled != null">      enabled,    </if>    <if test="accountNonExpired != null">      accountNonExpired,    </if>    <if test="accountNonLocked != null">      accountNonLocked,    </if>    <if test="credentialsNonExpired != null">      credentialsNonExpired,    </if>    <if test="createTime != null">      create_time,    </if>    <if test="updateTime != null">      update_time,    </if>    <if test="createBy != null">      create_by,    </if>    <if test="updateBy != null">      update_by,    </if>  </trim>  <trim prefix="values (" suffix=")" suffixOverrides=",">    <if test="pid != null">      #{pid,jdbcType=BIGINT},    </if>    <if test="tenantId != null">      #{tenantId,jdbcType=BIGINT},    </if>    <if test="username != null">      #{username,jdbcType=VARCHAR},    </if>    <if test="password != null">      #{password,jdbcType=VARCHAR},    </if>    <if test="nick != null">      #{nick,jdbcType=VARCHAR},    </if>    <if test="gender != null">      #{gender,jdbcType=INTEGER},    </if>    <if test="age != null">      #{age,jdbcType=INTEGER},    </if>    <if test="headImg != null">      #{headImg,jdbcType=VARCHAR},    </if>    <if test="phone != null">      #{phone,jdbcType=VARCHAR},    </if>    <if test="state != null">      #{state,jdbcType=INTEGER},    </if>    <if test="pushToken != null">      #{pushToken,jdbcType=VARCHAR},    </if>    <if test="appSalt != null">      #{appSalt,jdbcType=VARCHAR},    </if>    <if test="webSalt != null">      #{webSalt,jdbcType=VARCHAR},    </if>    <if test="enabled != null">      #{enabled,jdbcType=BOOLEAN},    </if>    <if test="accountNonExpired != null">      #{accountNonExpired,jdbcType=BOOLEAN},    </if>    <if test="accountNonLocked != null">      #{accountNonLocked,jdbcType=BOOLEAN},    </if>    <if test="credentialsNonExpired != null">      #{credentialsNonExpired,jdbcType=BOOLEAN},    </if>    <if test="createTime != null">      #{createTime,jdbcType=DATE},    </if>    <if test="updateTime != null">      #{updateTime,jdbcType=DATE},    </if>    <if test="createBy != null">      #{createBy,jdbcType=VARCHAR},    </if>    <if test="updateBy != null">      #{updateBy,jdbcType=VARCHAR},    </if>  </trim></insert><update id="updateByPrimaryKeySelective" parameterType="com.baba.security.auth.entity.User">  <!--@mbg.generated-->  update tbl_user  <set>    <if test="pid != null">      pid = #{pid,jdbcType=BIGINT},    </if>    <if test="tenantId != null">      tenant_id = #{tenantId,jdbcType=BIGINT},    </if>    <if test="username != null">      username = #{username,jdbcType=VARCHAR},    </if>    <if test="password != null">      `password` = #{password,jdbcType=VARCHAR},    </if>    <if test="nick != null">      nick = #{nick,jdbcType=VARCHAR},    </if>    <if test="gender != null">      gender = #{gender,jdbcType=INTEGER},    </if>    <if test="age != null">      age = #{age,jdbcType=INTEGER},    </if>    <if test="headImg != null">      head_img = #{headImg,jdbcType=VARCHAR},    </if>    <if test="phone != null">      phone = #{phone,jdbcType=VARCHAR},    </if>    <if test="state != null">      `state` = #{state,jdbcType=INTEGER},    </if>    <if test="pushToken != null">      push_token = #{pushToken,jdbcType=VARCHAR},    </if>    <if test="appSalt != null">      app_salt = #{appSalt,jdbcType=VARCHAR},    </if>    <if test="webSalt != null">      web_salt = #{webSalt,jdbcType=VARCHAR},    </if>    <if test="enabled != null">      enabled = #{enabled,jdbcType=BOOLEAN},    </if>    <if test="accountNonExpired != null">      accountNonExpired = #{accountNonExpired,jdbcType=BOOLEAN},    </if>    <if test="accountNonLocked != null">      accountNonLocked = #{accountNonLocked,jdbcType=BOOLEAN},    </if>    <if test="credentialsNonExpired != null">      credentialsNonExpired = #{credentialsNonExpired,jdbcType=BOOLEAN},    </if>    <if test="createTime != null">      create_time = #{createTime,jdbcType=DATE},    </if>    <if test="updateTime != null">      update_time = #{updateTime,jdbcType=DATE},    </if>    <if test="createBy != null">      create_by = #{createBy,jdbcType=VARCHAR},    </if>    <if test="updateBy != null">      update_by = #{updateBy,jdbcType=VARCHAR},    </if>  </set>  where id = #{id,jdbcType=BIGINT}</update><update id="updateByPrimaryKey" parameterType="com.baba.security.auth.entity.User">  <!--@mbg.generated-->  update tbl_user  set pid = #{pid,jdbcType=BIGINT},    tenant_id = #{tenantId,jdbcType=BIGINT},    username = #{username,jdbcType=VARCHAR},    `password` = #{password,jdbcType=VARCHAR},    nick = #{nick,jdbcType=VARCHAR},    gender = #{gender,jdbcType=INTEGER},    age = #{age,jdbcType=INTEGER},    head_img = #{headImg,jdbcType=VARCHAR},    phone = #{phone,jdbcType=VARCHAR},    `state` = #{state,jdbcType=INTEGER},    push_token = #{pushToken,jdbcType=VARCHAR},    app_salt = #{appSalt,jdbcType=VARCHAR},    web_salt = #{webSalt,jdbcType=VARCHAR},    enabled = #{enabled,jdbcType=BOOLEAN},    accountNonExpired = #{accountNonExpired,jdbcType=BOOLEAN},    accountNonLocked = #{accountNonLocked,jdbcType=BOOLEAN},    credentialsNonExpired = #{credentialsNonExpired,jdbcType=BOOLEAN},    create_time = #{createTime,jdbcType=DATE},    update_time = #{updateTime,jdbcType=DATE},    create_by = #{createBy,jdbcType=VARCHAR},    update_by = #{updateBy,jdbcType=VARCHAR}  where id = #{id,jdbcType=BIGINT}</update><select id="findByAll" resultMap="BaseResultMap">      <!--@mbg.generated-->      select      <include refid="Base_Column_List" />      from tbl_user      <where>          <if test="id != null">              and id=#{id,jdbcType=BIGINT}          </if>          <if test="pid != null">              and pid=#{pid,jdbcType=BIGINT}          </if>          <if test="tenantId != null">              and tenant_id=#{tenantId,jdbcType=BIGINT}          </if>          <if test="username != null">              and username=#{username,jdbcType=VARCHAR}          </if>          <if test="password != null">              and `password`=#{password,jdbcType=VARCHAR}          </if>          <if test="nick != null">              and nick=#{nick,jdbcType=VARCHAR}          </if>          <if test="gender != null">              and gender=#{gender,jdbcType=INTEGER}          </if>          <if test="age != null">              and age=#{age,jdbcType=INTEGER}          </if>          <if test="headImg != null">              and head_img=#{headImg,jdbcType=VARCHAR}          </if>          <if test="phone != null">              and phone=#{phone,jdbcType=VARCHAR}          </if>          <if test="state != null">              and `state`=#{state,jdbcType=INTEGER}          </if>          <if test="pushToken != null">              and push_token=#{pushToken,jdbcType=VARCHAR}          </if>          <if test="appSalt != null">              and app_salt=#{appSalt,jdbcType=VARCHAR}          </if>          <if test="webSalt != null">              and web_salt=#{webSalt,jdbcType=VARCHAR}          </if>          <if test="enabled != null">              and enabled=#{enabled,jdbcType=BOOLEAN}          </if>          <if test="accountNonExpired != null">              and accountNonExpired=#{accountNonExpired,jdbcType=BOOLEAN}          </if>          <if test="accountNonLocked != null">              and accountNonLocked=#{accountNonLocked,jdbcType=BOOLEAN}          </if>          <if test="credentialsNonExpired != null">              and credentialsNonExpired=#{credentialsNonExpired,jdbcType=BOOLEAN}          </if>          <if test="createTime != null">              and create_time=#{createTime,jdbcType=DATE}          </if>          <if test="updateTime != null">              and update_time=#{updateTime,jdbcType=DATE}          </if>          <if test="createBy != null">              and create_by=#{createBy,jdbcType=VARCHAR}          </if>          <if test="updateBy != null">              and update_by=#{updateBy,jdbcType=VARCHAR}          </if>      </where>  </select></mapper>

测试

拜访 localhost:8080/auth

响应头中获取到 authorization 令牌。
咱们输错地址看看有没有全局异样响应。

拜访一下其余服务,在从新登录模仿挤号,在拜访提醒已在其余设施登录。


生成的jwt咱们能够看看是啥样子的。
拜访https://jwt.io/输出token,当然要把前六位(Bearer )去掉

阐明

前面,咱们再应用Oauth2.0来集成凋谢接口平台