本次目标

实现后台登录鉴权功能。

接口文档

1.后台管理员登录
页面访问地址:http://admin/pages/main/login.html

2.接口描述

js请求地址 http://{ip:port}/user/adminLogin
后台接收 user/adminLogin
请求方式 POST
请求参数 String username;用户名
String psw;密码
String valicaod;验证码
返回数据 返回SysResult对象的json,其结构:
Integer status; 200表示成功,其他表示失败。
String msg;成功返回 “ok”,失败返回其他信息。
Object data;根据需求携带其他数据。

数据库用户权限相关表设计

用户角色表

CREATE TABLE `tsb_role` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色ID',`parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '父级角色ID',`role_name` varchar(64) NOT NULL COMMENT '角色名称',`gen_time` bigint(20) DEFAULT NULL COMMENT '创建时间',`description` varchar(200) DEFAULT NULL COMMENT '角色描述',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

用户角色关联表

CREATE TABLE `tsb_common_user_role_relation` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '记录标识',`uid` bigint(20) NOT NULL COMMENT '用户id',`rid` bigint(20) NOT NULL COMMENT '角色id',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

权限表

CREATE TABLE `tsb_right` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`parent_id` bigint(20) NOT NULL COMMENT '父权限',`right_name` varchar(200) NOT NULL COMMENT '权限名称',`description` varchar(200) DEFAULT NULL COMMENT '描述',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

角色权限关联表

CREATE TABLE `tsb_role_right_relation` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`role_id` bigint(20) NOT NULL COMMENT '角色id',`right_id` bigint(20) NOT NULL COMMENT '权限id',`right_type` tinyint(4) NOT NULL COMMENT '(0:无权访问,1:有权访问)',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8

代码实现

控制层

package liwen.zhao;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication
@MapperScan("liwen.zhao.mappers")
@EnableEurekaClient
public class JDUserMicroserviceStarter {public static void main(String[] args) {SpringApplication.run(JDUserMicroserviceStarter.class,args);}
}

业务层

接口类:

package liwen.zhao.service;import liwen.zhao.common.jd.pojo.CommonUser;
import liwen.zhao.common.jd.vo.SysResult;public interface UserService {CommonUser findCommonUserByName(String userName);SysResult adminLogin(String userName, String psw, String action);
}

实现类:

package liwen.zhao.service;import liwen.zhao.common.jd.pojo.CommonUser;
import liwen.zhao.common.jd.pojo.Right;
import liwen.zhao.common.jd.pojo.Role;
import liwen.zhao.common.jd.utils.MD5Util;
import liwen.zhao.common.jd.vo.SysResult;
import liwen.zhao.mappers.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;import java.util.List;@Service
public class UserServiceImpl implements UserService {@Value("${solt}")private String solt;@AutowiredUserMapper userMapper;@Overridepublic CommonUser findCommonUserByName(String userName) {return userMapper.findCommonUserByName(userName,"user/adminLogin");}@Overridepublic SysResult adminLogin(String userName, String psw, String action) {//密码加盐并md5psw= MD5Util.md5(psw+solt);CommonUser commonUser;try{commonUser=userMapper.findCommonUserByNameAndPswAndAction(userName,psw,action);}catch (Exception e){e.printStackTrace();return SysResult.build(500,"登录异常",null);}if(commonUser==null){return SysResult.build(500,"用户名或密码错误",null);}//判断该用户具有后台登录权限boolean ifOk=false;List<Role> roles=commonUser.getRoles();if(null!=roles&&roles.size()>0){for(Role role:roles){if(ifOk){break;}List<Right> rights=role.getRightList();if(null!=rights&&rights.size()>0){for(Right right:rights){if(1==right.getRight_type()){ifOk=true;break;}}}}}if(!ifOk){return SysResult.build(500,"无权访问!",null);}return SysResult.build(200,"",null);}
}

MyBatis Mapper文件配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="liwen.zhao.mappers.UserMapper"><resultMap id="cus" type="liwen.zhao.common.jd.pojo.CommonUser"><id column="id" property="id"/><result column="userName" property="userName"/><collection property="roles" ofType="liwen.zhao.common.jd.pojo.Role"><id column="roleid" property="id"/><result column="ppid" property="parent_id"/><result column="role_name" property="role_name"/><result column="gen_time" property="gen_time"/><result column="description" property="description"/><collection property="rightList" ofType="liwen.zhao.common.jd.pojo.Right"><id column="riid" property="id"/><result column="right_name" property="right_name"/><result column="right_type" property="right_type"/></collection></collection></resultMap><select id="findCommonUserByNameAndPswAndAction" resultMap="cus">SELECT *,tsb_common_user_role_relation.id AS currid,tsb_role_right_relation.id AS rrrid,tsb_right.id AS riid,tsb_role.id as roleid,tsb_role.parent_id as ppid FROM tsb_common_userRIGHT JOIN tsb_common_user_role_relation  ON tsb_common_user.id=tsb_common_user_role_relation.uidLEFT JOIN tsb_role ON tsb_role.id=tsb_common_user_role_relation.ridLEFT JOIN tsb_role_right_relation ON tsb_role_right_relation.role_id=tsb_common_user_role_relation.ridLEFT JOIN tsb_right ON tsb_right.id=tsb_role_right_relation.right_id<where><if test="userName !=null">tsb_common_user.userName=#{userName}</if><if test="action !=null">and right_name=#{action}</if><if test="psw !=null">and psw=#{psw}</if></where></select>
</mapper>

前端JS实现

<script>function checkForm(){$("#sub").html("<i class=\"fas fa-1x fa-sync-alt fa-spin\"></i> Sign In");var userName=$("input[name='userName']").val();var psw=$("input[name='psw']").val();$.post("http://localhost/user/adminLogin",{"username":userName,"psw":psw,},function (result) {$("#sub").html("Sign In");if(result.status!=200){alert(result.msg);}else{$(window).attr('location','http://localhost/admin');}})return false;}
</script>

最终效果

密码错误提示:

无权访问提示:


用户名密码正确,并且有权访问,调转主页(注:暂未实现登录状态存储):


代码地址:https://gitee.com/zhaoliwen/JD_ALL.git

4.从零开始搭建基于SpringCloud的京东整站_用户微服务_后台登录鉴权相关推荐

  1. 3.从零开始搭建基于SpringCloud的京东整站_文件上传微服务

    本次目标 本次实现的目标:实现图片上传微服务. 文件上传在很多项目和很多模块都要用到,所以将其单独作为一个微服务. 如下图蓝色箭头所示:FileUploadMicroservice 静态资源 本案例图 ...

  2. cloud自动发卡平台cloudfaka_open-cloud基于springcloud、oauth2、nacos打造的微服务开放平台...

    简介 搭建基于OAuth2的开放平台.为APP端.应用服务提供统一接口管控平台.为第三方合作伙伴的业务对接提供授信可控的技术对接平台 分布式架构,统一配置中心,服务治理.fegin(RPC)内部调用, ...

  3. Spring Security OAuth2.0_实现分布式认证授权_微服务解析令牌并鉴权_Spring Security OAuth2.0认证授权---springcloud工作笔记154

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 然后我们接着去看,我们需要其他的微服务就解析令牌,并且进行根据权限判断能不能来访问我们的某个方法 ...

  4. 利用cloudflare works搭建个人网盘站——免费免服务器搭建基于onedrive的网盘站(2021版)

    FODI是一款 OneDrive 秒级列表程序,之前就支持腾讯云SFC搭建基于onedrive的网盘站,但是现在腾讯云api要收费了(cloudflare的访问速度没有腾讯云的SFC快),所以其作者增 ...

  5. 利用cloudflare works搭建个人网盘站——免费免服务器搭建基于onedrive的网盘站(2020版)

    FODI是一款 OneDrive 秒级列表程序,之前就支持腾讯云SFC搭建基于onedrive的网盘站,但是现在腾讯云api要收费了(cloudflare的访问速度没有腾讯云的SFC快),所以其作者增 ...

  6. 【学习日记2023.6.9】之 SpringCloud入门(认识微服务_服务拆分和远程调用RestTemplate_Eureka注册中心_Ribbon负载均衡_Nacos注册中心)

    文章目录 SpringCloud 1. 认识微服务 1.1 单体架构 1.2 分布式架构 1.3 微服务 1.4 SpringCloud 1.5 总结 2. 服务拆分和远程调用 2.1 服务拆分原则 ...

  7. 史上最简单:SpringCloud 集成 mybatis-plus(以若依微服务版本为例)

    编者按:若依微服务版是基于Spring Boot.Spring Cloud & Alibaba的微服务的权限管理系统,也是笔者比较推荐的个人学习和企业实践都比较优秀的开源项目. 笔者也以此项目 ...

  8. Java微服务_医疗管理项目_基于若依快速开发框架

    一.项目简介 项目简介:尚医疗是专门为各大医院.门]诊提供的一款医疗管理平台.系统包含:系统 管理.药品进销存管理.看病就诊.收费管理.检查管理.数据统计等核心模块.通过尚医 疗系统可以快速方便的管理 ...

  9. SpringCloud(第 002 篇)简单电影微服务类(消费方,而提供方为用户微服务)

    2019独角兽企业重金招聘Python工程师标准>>> SpringCloud(第 002 篇)简单电影微服务类(消费方,而提供方为用户微服务) 一.大致介绍 微服务与微服务之间通过 ...

最新文章

  1. Python Day Eleven
  2. 【错误记录】IntelliJ IDEA 中 Java 代码中的中文注释报错 ( Menu / File / Settings / Editor / File Encodings 中修改工程编码 )
  3. linux下查看文件命令小结
  4. hdu-3342-Legal or Not--拓扑排序//两种解法
  5. AtCoder AGC030F Permutation and Minimum (DP、计数)
  6. Fiori 花瓣动画效果的实现原理
  7. 前端项目难点及解决方法_预埋件施工重点难点的解决方法
  8. A Concise and Provably Informative Multi-Scale Signature Based on Heat Diffusion
  9. Struts2中的ModelDriven机制及其运用、refreshModelBeforeResult属性解决的问题
  10. oracle mysql us7acsii_有关oracle数据库us7ascii字符集转换策略的探讨
  11. 明解java.pdf_明解C语言:中级篇 PDF下载
  12. java 毕向东 内部类_内部类--毕向东Java基础教程学习笔记
  13. 主要发达国家大数据政策比较研究
  14. 实训小笔记之—产品经理能力模型
  15. [渝粤教育] 西北农林科技大学 成本会计学 参考 资料
  16. 基于java奥利给共享自习室系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
  17. Proteus VSM Studio汇编 + 蜂鸣器播放谱曲八月桂花香
  18. 练习:银行复利计算(用 for 循环解一道初中小题)
  19. vb.net 教程 3-6 窗体编程 打印
  20. 《单片机原理及应用》——概述

热门文章

  1. echarts饼图的颜色修改
  2. Metastealer 接棒 Racoon stealer 进行窃密
  3. Python偏最小二乘回归(PLSR)测试
  4. java编码解码加密解密--md5、SHA-256、SHA-512、MAC、DES、AES、RSA
  5. adb.exe无法运行,提示0xc000007b错误
  6. 力不如我的同学,靠这份Java面试八股文,秋招拿到了60w+的offer
  7. FTP中MLST概要解读---解决获取ftpFile为null的另外一种方式
  8. Linux内核机制总结内存管理之每处理器内存分配器(十七)
  9. C语言实现基于翔云平台的人脸识别demo2(树莓派)
  10. HardFault_Handler的相关实验1--VCAP_1管脚外加信号源