Java的新项目学成在线笔记-day17(一)

1.1 用户认证流程分析 
用户认证流程如下:
 
业务流程说明如下:
1、客户端请求认证服务进行认证。
2、认证服务认证通过向浏览器cookie写入token(身份令牌)
认证服务请求用户中心查询用户信息。
认证服务请求Spring Security申请令牌。 认证服务将token(身份令牌)和jwt令牌存储至redis中。 认证服务向cookie写入 token(身份令牌)。
3、前端携带token请求认证服务获取jwt令牌 前端获取到jwt令牌并存储在sessionStorage。
前端从jwt令牌中解析中用户信息并显示在页面。
4、前端携带cookie中的token身份令牌及jwt令牌访问资源服务 前端请求资源服务需要携带两个token,一个是cookie中的身份令牌,一个是http header中的jwt令牌
前端请求资源服务前在http header上添加jwt请求资源 
5、网关校验token的合法性

用户请求必须携带token身份令牌和jwt令牌 网关校验redis中token是否合法,已过期则要求用户重新登录
6、资源服务校验jwt的合法性并完成授权 资源服务校验jwt令牌,完成授权,拥有权限的方法正常执行,没有权限的方法将拒绝访问。

1.2 认证服务查询数据库 1.2.1 需求分析 
认证服务根据数据库中的用户信息去校验用户的身份,即校验账号和密码是否匹配。
认证服务不直接连接数据库,而是通过用户中心服务去查询用户中心数据库。

 
1.2.2 搭建环境 1.2.2.1 创建用户中心数据库 
用户中心负责用户管理,包括:用户信息管理、角色管理、权限管理等。
创建xc_user数据库(MySQL)
导入xc_user.sql(已导入不用重复导入)

 
1.2.4 查询用户接口 
完成用户中心根据账号查询用户信息接口功能。 1.2.4.1 Api接口 
用户中心对外提供如下接口:
1、响应数据类型

此接口将来被用来查询用户信息及用户权限信息,所以这里定义扩展类型
 

[AppleScript] 纯文本查看 复制代码

?

1

2

3

4

5

@Data @ToString public class XcUserExt extends XcUser {  

  //权限信息  

  private List<XcMenu> permissions;  

  //企业信息  

  private String companyId; }


2、根据账号查询用户信息
 

[AppleScript] 纯文本查看 复制代码

?

1

@Api(value = "用户中心",description = "用户中心管理") public interface UcenterControllerApi {     public XcUserExt getUserext(String username); }


1.2.4.2 DAO 
添加XcUser、XcCompantUser两个表的Dao
 

[AppleScript] 纯文本查看 复制代码

?

1

2

3

4

5

6

7

8

public interface XcUserRepository extends

JpaRepository<XcUser, String> {     

   XcUser findXcUserByUsername(String username);

}

public interface XcCompanyUserRepository extends JpaRepository<XcCompanyUser,String> {

    //根据用户id查询所属企业id   

 XcCompanyUser findByUserId(String userId);

}


1.2.4.2 Service 

[AppleScript] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

@Service public class UserService {  

    @Autowired  

  private XcUserRepository xcUserRepository;    

  //根据用户账号查询用户信息

    public XcUser findXcUserByUsername(String username){   

     return xcUserRepository.findXcUserByUsername(username);  

  }  

  //根据账号查询用户的信息,返回用户扩展信息 

   public XcUserExt getUserExt(String username){  

      XcUser xcUser = this.findXcUserByUsername(username);  

      if(xcUser == null){     

       return null;

 

[AppleScript] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

}  

      XcUserExt xcUserExt = new XcUserExt()

       BeanUtils.copyProperties(xcUser,xcUserExt);   

     //用户id    

    String userId = xcUserExt.getId();   

     //查询用户所属公司      

  XcCompanyUser xcCompanyUser = xcCompanyUserRepository.findXcCompanyUserByUserId(userId);  

      if(xcCompanyUser!=null){      

      String companyId = xcCompanyUser.getCompanyId();     

       xcUserExt.setCompanyId(companyId);   

     }     

   return xcUserExt; 

   } }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值