人事项目技术要点

一、使用Spring Security+JWT 框架实现登录功能

JwtTokenUtil 根据负载生成JWT Token  从token中获取JWT中的负载

配置SpringSecurity  configure//基于token,不需要session //允许登录访问 //除上面外,所有请求都要求认证 //禁用缓存//添加jwt 登录授权过滤器 //添加自定义未授权和未登录结果返回

login先判断账号密码是不是正确的,错误返回错误信息,正确的话生成token

添加自定义未授权及未登录的结果返回 当未登录或者token失效时访问接口时,自定义的返回结果

estfulAccessDeniedHandler 当访问接口没有权限时,自定义返回结果类

首先是登录的时候会先通过JwtloginFilter获取到的参数会封装成jwtlogintoken,然后又jwtauthenticationprovider来判断token是不是正确的,如果是正确的话会通过jwtloginsuccesshandler返回正确信息,如果是错误的话会通过jwtloginfailurehandler返回错误信息。

访问某个路劲的时候jwttokenfilter会拦截你的请求判断你的token是不是合法的,如果token不是合法的会返回错误信息,如果token是合法的会通过jwtFilterInvocationSercurityMetadataSource判断当前路径所需的角色列表,然后通过jwtaccessdecisionmanager判断是否具备所需的角色,如果不具有的话jwtaccessdeniedhandler会返回错误信息,具备的话会允许访问

二、RBAC角色模型

一个用户拥有若干角色,每一个角色拥有若干权限

拦截器中判断

 

权限数据库设计

1.hr表是用户表,存放了用户的基本信息。

2.role是角色表,name字段表示角色的英文名称,按照SpringSecurity的规范,将以ROLE_开始,nameZh字段表示角色的中文名称。

3.menu表是一个资源表,该表涉及到的字段有点多,由于我的前端采用了Vue来做,因此当用户登录成功之后,系统将根据用户的角色动态加载需要的模块,所有模块的信息将保存在menu表中,menu表中的path、component、iconCls、keepAlive、requireAuth等字段都是Vue-Router中需要的字段,也就是说menu中的数据到时候会以json的形式返回给前端,再由vue动态更新router,menu中还有一个字段url,表示一个url pattern,即路径匹配规则,假设有一个路径匹配规则为/admin/**,那么当用户在客户端发起一个/admin/user的请求,将被/admin/**拦截到,系统再去查看这个规则对应的角色是哪些,然后再去查看该用户是否具备相应的角色,进而判断该请求是否合法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值