当前位置: 首页 > wzjs >正文

网站名称图标如何做才能显示宁宁网seo

网站名称图标如何做才能显示,宁宁网seo,wordpress七牛sdk,wordpress做视频站好一.后端环境搭建-前后端联调 首先进行编译,编译通过才能够正常运行,我们可以看到已成功编译通过。 SkyApplication启动成功 登录成功 二.登录操作 1.controller层 package com.sky.controller.admin;import com.sky.constant.JwtClaimsConstant; impo…

一.后端环境搭建-前后端联调

首先进行编译,编译通过才能够正常运行,我们可以看到已成功编译通过。

 SkyApplication启动成功

登录成功

二.登录操作 

1.controller层

package com.sky.controller.admin;import com.sky.constant.JwtClaimsConstant;
import com.sky.dto.EmployeeLoginDTO;
import com.sky.entity.Employee;
import com.sky.properties.JwtProperties;
import com.sky.result.Result;
import com.sky.service.EmployeeService;
import com.sky.utils.JwtUtil;
import com.sky.vo.EmployeeLoginVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;
import java.util.Map;/*** 员工管理*/
@RestController
@RequestMapping("/admin/employee")
@Slf4j
@Api(tags = "员工相关接口")
public class EmployeeController {@Autowiredprivate EmployeeService employeeService;@Autowiredprivate JwtProperties jwtProperties;/*** 登录** @param employeeLoginDTO* @return*/@PostMapping("/login")@ApiOperation(value = "员工登录")public Result<EmployeeLoginVO> login(@RequestBody EmployeeLoginDTO employeeLoginDTO) {log.info("员工登录:{}", employeeLoginDTO);Employee employee = employeeService.login(employeeLoginDTO);//登录成功后,生成jwt令牌Map<String, Object> claims = new HashMap<>();claims.put(JwtClaimsConstant.EMP_ID, employee.getId());String token = JwtUtil.createJWT(jwtProperties.getAdminSecretKey(),jwtProperties.getAdminTtl(),claims);EmployeeLoginVO employeeLoginVO = EmployeeLoginVO.builder().id(employee.getId()).userName(employee.getUsername()).name(employee.getName()).token(token).build();return Result.success(employeeLoginVO);}/*** 退出** @return*/@PostMapping("/logout")@ApiOperation("员工登出")public Result<String> logout() {return Result.success();}}

 2.service层

接口 

package com.sky.service;import com.sky.dto.EmployeeLoginDTO;
import com.sky.entity.Employee;public interface EmployeeService {/*** 员工登录* @param employeeLoginDTO* @return*/Employee login(EmployeeLoginDTO employeeLoginDTO);}

 实现类

package com.sky.service.impl;import com.sky.constant.MessageConstant;
import com.sky.constant.StatusConstant;
import com.sky.dto.EmployeeLoginDTO;
import com.sky.entity.Employee;
import com.sky.exception.AccountLockedException;
import com.sky.exception.AccountNotFoundException;
import com.sky.exception.PasswordErrorException;
import com.sky.mapper.EmployeeMapper;
import com.sky.service.EmployeeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.DigestUtils;@Service
public class EmployeeServiceImpl implements EmployeeService {@Autowiredprivate EmployeeMapper employeeMapper;/*** 员工登录** @param employeeLoginDTO* @return*/public Employee login(EmployeeLoginDTO employeeLoginDTO) {String username = employeeLoginDTO.getUsername();String password = employeeLoginDTO.getPassword();//1、根据用户名查询数据库中的数据Employee employee = employeeMapper.getByUsername(username);//2、处理各种异常情况(用户名不存在、密码不对、账号被锁定)if (employee == null) {//账号不存在throw new AccountNotFoundException(MessageConstant.ACCOUNT_NOT_FOUND);}//密码比对// 对前端传过来的明文密码进行md5加密password = DigestUtils.md5DigestAsHex(password.getBytes());if (!password.equals(employee.getPassword())) {//密码错误throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);}if (employee.getStatus() == StatusConstant.DISABLE) {//账号被锁定throw new AccountLockedException(MessageConstant.ACCOUNT_LOCKED);}//3、返回实体对象return employee;}}

3.mapper层

package com.sky.mapper;import com.sky.entity.Employee;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;@Mapper
public interface EmployeeMapper {/*** 根据用户名查询员工* @param username* @return*/@Select("select * from employee where username = #{username}")Employee getByUsername(String username);}

4.异常处理

AccountNotFoundException是我们自定义的一个异常类,代表账号不存在。在我们项目的sky-common项目当中存放了很多的异常类。在sky-server当中定义了全局异常处理器。

AccountNotFoundException继承了BaseException

package com.sky.exception;/*** 账号不存在异常*/
public class AccountNotFoundException extends BaseException {public AccountNotFoundException() {}public AccountNotFoundException(String msg) {super(msg);}}

BaseException继承了RuntimeException

package com.sky.exception;/*** 业务异常*/
public class BaseException extends RuntimeException {public BaseException() {}public BaseException(String msg) {super(msg);}}

全局异常处理器

package com.sky.handler;import com.sky.exception.BaseException;
import com.sky.result.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;/*** 全局异常处理器,处理项目中抛出的业务异常*/
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {/*** 捕获业务异常* @param ex* @return*/@ExceptionHandlerpublic Result exceptionHandler(BaseException ex){log.error("异常信息:{}", ex.getMessage());return Result.error(ex.getMessage());}}

查找到用户信息后,继续进行密码和状态比对。 

状态常量类 

package com.sky.constant;/*** 状态常量,启用或者禁用*/
public class StatusConstant {//启用public static final Integer ENABLE = 1;//禁用public static final Integer DISABLE = 0;
}

查询返回 

5.生成JWT令牌

登录成功后,生成JWT令牌

通过配置属性类将JwtProperties这个类的对象传入,然后调用其中的方法,来生成JWT令牌。@ConfigurationProperties(prefix = "sky.jwt")表明当前类是一个配置属性类,这个类的作用就是来封装配置文件当中的配置项,那么他封装的是哪个配置文件当中的配置项呢?显然是springboot配置文件。要找sky下面的jwt配置项。

package com.sky.properties;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "sky.jwt")
@Data
public class JwtProperties {/*** 管理端员工生成jwt令牌相关配置*/private String adminSecretKey;private long adminTtl;private String adminTokenName;/*** 用户端微信用户生成jwt令牌相关配置*/private String userSecretKey;private long userTtl;private String userTokenName;}

接着我们来看这两个springboot的配置文件,一个是application.yml,另一个是application-dev.yml,这两个其实都有效:在application.yml文件中

server:port: 8080spring:profiles:active: devmain:allow-circular-references: truedatasource:druid:driver-class-name: ${sky.datasource.driver-class-name}url: jdbc:mysql://${sky.datasource.host}:${sky.datasource.port}/${sky.datasource.database}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=trueusername: ${sky.datasource.username}password: ${sky.datasource.password}mybatis:#mapper配置文件mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.sky.entityconfiguration:#开启驼峰命名map-underscore-to-camel-case: truelogging:level:com:sky:mapper: debugservice: infocontroller: infosky:jwt:# 设置jwt签名加密时使用的秘钥admin-secret-key: itcast# 设置jwt过期时间admin-ttl: 7200000# 设置前端传递过来的令牌名称admin-token-name: token

spring.profiles.active:dev,表明dev配置文件也已开启。

6.封装数据响应给前端页面

package com.sky.vo;import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.io.Serializable;@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(description = "员工登录返回的数据格式")
public class EmployeeLoginVO implements Serializable {@ApiModelProperty("主键值")private Long id;@ApiModelProperty("用户名")private String userName;@ApiModelProperty("姓名")private String name;@ApiModelProperty("jwt令牌")private String token;}

使用builder()方法封装对象要加上@Builder注解。将构造好的EmployeeLoginVO对象统一响应给前端。 

http://www.dtcms.com/wzjs/340773.html

相关文章:

  • 徐州招标网广州seo优化排名推广
  • dw怎样去除网站做的页面模板免费推广网站大全下载安装
  • 大连企业建站程序免费推广网站2023
  • wordpress vue 关系学生班级优化大师
  • 网站建设系统哪家便宜些大连百度推广公司
  • 专题页网站怎么做seo收费低
  • 建设注册证信息网站搜索引擎营销的优势和劣势
  • 携程网站建设进度及实施过程网站的seo方案
  • 乌鲁木齐网站建设推广关键词优化公司网站
  • 鄂州第一官方网站怎么做一个属于自己的网站
  • 做网站的前端框架电商运营主要负责什么
  • 免费建站网站seo网络营销课程ppt
  • 360网站做不了网银怎么办网站怎么申请怎么注册
  • 天津有哪些好的做网站公司代运营哪家比较可靠
  • 做放单网站百度客服中心人工在线
  • 北辰正方建设集团有限公司官方网站中国制造网外贸平台
  • 建立数据库连接时出错wordpress网站结构优化的内容和方法
  • 建设服装网站目的杭州seo排名公司
  • php网站开发难吗seo优化员
  • 网站开发就业岗位今日新闻头条热点
  • 电商网站平台网络推广哪家好
  • 玉溪网站建设现状免费做网站
  • 做亚马逊网站需要租办公室吗网页制作与网站建设实战教程
  • 织梦网站建设教程如何做网站建设
  • 网站邮件发送功能怎么做百度的网页地址
  • 浙江省住房和城乡建设局网站首页seo网站推广怎么做
  • wordpress收藏夹赣州seo顾问
  • wordpress搜索全站店铺推广方式有哪些
  • 怎么才能登网站做外贸公司运营策划营销
  • 做公司网站哪里好app用户量排名