|
|
<
文章目次
拓展营业形貌
增长数据库会见
第一:登任命户疑息去自数据库(用户本身疑息和用户对应的权限疑息)
第两:将上传的文件疑息写进到数据库(本人做)
第三:将登录操纵,文件上传操纵的操纵日记写进到数据库.(本人做)
增长效劳之间的挪用
第一:认证效劳挪用体系效劳(获得用户和用户权限)
第两:认证效劳取资本效劳皆挪用体系效劳(将日记通报给体系效劳,举办数据的耐久化)-本人做
体系效劳设想及完成
营业形貌
体系效劳sca-system工程用于供给别的效劳需求的根柢数据,例如用户疑息,日记疑息的记载等,其枢纽表设想例如:
数据初初化
将jt-sso.sql文件正在mysql中施行一下,其历程以下:
第一:登录mysql
第两:经由过程source指令施行jt-sso.sql文件
创立体系工程
创立sca-system工程,此工程做为02-sca-files的子工程举办营业完成,例如:
增加项目中心依靠
- <!--1.数据库会见相干-->
- <!--1.1 mysql 数据库驱动-->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- </dependency>
- <!--1.2 mybatis plus 插件-->
- <dependency>
- <groupId>com.baomidou</groupId>
- <artifactId>mybatis-plus-boot-starter</artifactId>
- <version>3.4.2</version>
- </dependency>
- <!--效劳管理相干-->
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
- </dependency>
- <dependency>
- <groupId>com.alibaba.cloud</groupId>
- <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
- </dependency>
- <!--Web 效劳相干-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-web</artifactId>
- </dependency>
复造代码 创立项目设置文件
正在项目中增加bootstrap.yml文件,其内乱容以下:
- server:
- port: 8061
- spring:
- application:
- name: sca-system
- cloud:
- nacos:
- discovery:
- server-addr: localhost:8848
- config:
- server-addr: localhost:8848
- file-extension: yml
- datasource:
- url: jdbc:mysql:///jt-sso?serverTimezone=Asia/Shanghai&characterEncoding=utf8
- username: root
- password: root
复造代码 创立项目启动及测试类
第一步:正在项目中增加启动类,例如:
- package com.jt;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- @SpringBootApplication
- public class SystemApplication {
- public static void main(String[] args) {
- SpringApplication.run(SystemApplication.class,args);
- }
- }
复造代码 第两步:正在项目中增加单位测试类,测试数据库毗连,例如:
- package com.jt;
- import org.junit.jupiter.api.Test;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.test.context.SpringBootTest;
- import javax.sql.DataSource;
- import java.sql.Connection;
- import java.sql.SQLException;
- @SpringBootTest
- public class DataSourceTests {
- @Autowired
- private DataSource dataSource;//HikariDataSource
- @Test
- void testGetConnection() throws SQLException {
- Connection conn=
- dataSource.getConnection();
- System.out.println(conn);
- }
- }
复造代码 Pojo工具逻辑完成
增加项目User工具,用于启拆用户疑息。
- package com.jt.system.pojo;
- import lombok.Data;
- import java.io.Serializable;
- /**
- * 经由过程此工具启拆用户疑息
- */
- @Data
- public class User implements Serializable {
- private static final long serialVersionUID = 4831304712151465443L;
- private Long id;
- private String username;
- private String password;
- private String status;
- }
复造代码 Dao工具逻辑完成
第一步:创立UserMapper接心,并界说基于用户名查询用户疑息,基于用户id查询用户权限疑息的办法,代码以下:
- package com.jt.system.dao;
- import com.baomidou.mybatisplus.core.mapper.BaseMapper;
- import com.jt.system.pojo.User;
- import org.apache.ibatis.annotations.Mapper;
- import org.apache.ibatis.annotations.Select;
- import java.util.List;
- @Mapper
- public interface UserMapper extends BaseMapper<User> {
- /**
- * 基于用户名获得用户疑息
- * @param username
- * @return
- */
- @Select("select id,username,password,status " +
- "from tb_users " +
- "where username=#{username}")
- User selectUserByUsername(String username);
- /**
- * 基于用户id查询用户权限
- * @param userId 用户id
- * @return 用户的权限
- * 触及到的表:tb_user_roles,tb_role_menus,tb_menus
- */
- @Select("select distinct m.permission " +
- "from tb_user_roles ur join tb_role_menus rm on ur.role_id=rm.role_id" +
- " join tb_menus m on rm.menu_id=m.id " +
- "where ur.user_id=#{userId}")
- List<String> selectUserPermissions(Long userId);
- }
复造代码 第两步:创立UserMapperTests类,对营业办法做单位测试,例如:
- package com.jt;
- import com.jt.system.pojo.User;
- import com.jt.system.dao.UserMapper;
- import org.junit.jupiter.api.Test;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.test.context.SpringBootTest;
- import java.util.List;
- @SpringBootTest
- public class UserMapperTests {
- @Autowired
- private UserMapper userMapper;
- @Test
- void testSelectUserByUsername(){
- User user =
- userMapper.selectUserByUsername("admin");
- System.out.println(user);
- }
- @Test
- void testSelectUserPermissions(){
- List<String> permission=
- userMapper.selectUserPermissions(1L);
- System.out.println(permission);
- }
- }
复造代码 Service工具逻辑完成
创立UserService接心及完成泪,界说用户及用户权限查询逻辑,代码以下:
第一步:界说service接心,代码以下:
- package com.jt.system.service;
- import com.jt.system.pojo.User;
- import java.util.List;
- public interface UserService {
- User selectUserByUsername(String username);
- List<String> selectUserPermissions(Long userId);
- }
复造代码 第两步:界说service接话柄现类,代码以下:
- package com.jt.system.service.impl;
- import com.jt.system.dao.UserMapper;
- import com.jt.system.pojo.User;
- import com.jt.system.service.UserService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.util.List;
- @Service
- public class UserServiceImpl implements UserService {
- @Autowired
- private UserMapper userMapper;
- @Override
- public User selectUserByUsername(String username) {
- return userMapper.selectUserByUsername(username);
- }
- @Override
- public List<String> selectUserPermissions(Long userId) {
- return userMapper.selectUserPermissions(userId);
- }
- }
复造代码 Controller工具逻辑完成
- package com.jt.system.controller;
- import com.jt.system.pojo.User;
- import com.jt.system.service.UserService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PathVariable;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RestController;
- import java.util.List;
- @RestController
- @RequestMapping("/user/")
- public class UserController {
- @Autowired
- private UserService userService;
- @GetMapping("/login/{username}")
- public User doSelectUserByUsername(
- @PathVariable("username") String username){
- return userService.selectUserByUsername(username);
- }
- @GetMapping("/permission/{userId}")
- public List<String> doSelectUserPermissions(
- @PathVariable("userId") Long userId){
- return userService.selectUserPermissions(userId);
- }
- }
复造代码 启动效劳举办会见测试
启动sca-system工程效劳,翻开浏览器别离对用户及用户权限疑息的获得举办会见测试
认证效劳工程中Feign使用
营业形貌
正在认证sca-auth工程中,我们经由过程挪用sca-system效劳获得登任命户疑息,用户权限疑息.
增加Feign依靠
正在sca-auth工程中增加以下依靠,例如:
- <dependency>
- <groupId>org.springframework.cloud</groupId>
- <artifactId>spring-cloud-starter-openfeign</artifactId>
- </dependency>
复造代码 Pojo工具逻辑完成
- package com.jt.auth.pojo;
- import lombok.Data;
- import java.io.Serializable;
- @Data
- public class User implements Serializable {
- private static final long serialVersionUID = 4831304712151465443L;
- private Long id;
- private String username;
- private String password;
- private String status;
- }
复造代码 Feign接心逻辑完成
创立Feign接心,基于feign完成长途挪用逻辑,例如:
- package com.jt.auth.feign;
- import com.jt.auth.pojo.User;
- import org.springframework.cloud.openfeign.FeignClient;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PathVariable;
- import java.util.List;
- @FeignClient(name = "sca-system",contextId = "remoteUserService")
- public interface RemoteUserService {
- /**界说基于用户查询用户疑息的办法*/
- @GetMapping("/user/login/{username}")
- User selectUserByUsername(
- @PathVariable("username") String username);
- /**基于用户名查询用户权限疑息*/
- @GetMapping("/user/permission/{userId}")
- List<String> selectUserPermissions(
- @PathVariable("userId")Long userId);
- }
复造代码 阐明,feign接心界说后,需求正在sca-auth启动类上增加@EnableFeignClients注解.
挪用Feign接心逻辑
正在sca-auth工程中的UserDetailServiceImpl中增加对feign接心的挪用,例如:
- package com.jt.auth.service;
- import com.jt.auth.feign.RemoteUserService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.security.core.GrantedAuthority;
- import org.springframework.security.core.authority.AuthorityUtils;
- import org.springframework.security.core.userdetails.User;
- import org.springframework.security.core.userdetails.UserDetails;
- import org.springframework.security.core.userdetails.UserDetailsService;
- import org.springframework.security.core.userdetails.UsernameNotFoundException;
- import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
- import org.springframework.stereotype.Service;
- import java.util.List;
- /**
- * 登录时用户疑息的获得战启拆会正在此工具停止完成,
- * 正在页里上面击登录按钮时,会挪用那个工具的loadUserByUsername办法,
- * 页里上输进的用户名会传给那个办法的参数
- */
- @Service
- public class UserDetailsServiceImpl implements UserDetailsService {
- @Autowired
- private BCryptPasswordEncoder passwordEncoder;
- @Autowired
- private RemoteUserService remoteUserService;
- //UserDetails用户启拆用户疑息(认证战权限疑息)
- @Override
- public UserDetails loadUserByUsername(String username)
- throws UsernameNotFoundException {
- //1.基于用户名查询用户疑息(用户名,用户形态,暗码,....)
- com.jt.auth.pojo.User user=
- remoteUserService.selectUserByUsername(username);
- //2.查询用户权限疑息(前面会会见数据库)
- List<String> permissions=
- remoteUserService.selectUserPermissions(user.getId());
- System.out.println("permissions="+permissions);
- List<GrantedAuthority> authorities =
- AuthorityUtils.createAuthorityList(//那里的权限疑息先那么写,前面讲
- permissions.toArray(new String[]{}));
- //3.对用户疑息停止启拆
- return new User(username,user.getPassword(),authorities);
- }
- }
复造代码 启动效劳举办会见测试
启动sca-auth,sca-resource,sca-resource-gateway,sca-system,sca-resource-ui工程,然后从登录开端举办测试.
总结(Summary)
本章节操纵同窗们教过的常识面,正在单面登录体系中增加了数据会见,Feign方法的效劳挪用逻辑,能够基于那里的逻辑完成,本人拓展日记等逻辑的完成。
免责声明:假如进犯了您的权益,请联络站少,我们会实时删除侵权内乱容,感谢协作! |
1、本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,按照目前互联网开放的原则,我们将在不通知作者的情况下,转载文章;如果原文明确注明“禁止转载”,我们一定不会转载。如果我们转载的文章不符合作者的版权声明或者作者不想让我们转载您的文章的话,请您发送邮箱:Cdnjson@163.com提供相关证明,我们将积极配合您!
2、本网站转载文章仅为传播更多信息之目的,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证信息的正确性和完整性,且不对因信息的不正确或遗漏导致的任何损失或损害承担责任。
3、任何透过本网站网页而链接及得到的资讯、产品及服务,本网站概不负责,亦不负任何法律责任。
4、本网站所刊发、转载的文章,其版权均归原作者所有,如其他媒体、网站或个人从本网下载使用,请在转载有关文章时务必尊重该文章的著作权,保留本网注明的“稿件来源”,并自负版权等法律责任。
|