15 KiB
1、了解权限管家
1.1、介绍
公司有多个业务系统,这些业务系统的公共部分包括组织、用户、权限等系统管理: 这个公共的系统管理,可以剥离出一套基础组件服务,即权限管家。
传智权限管家是一个通用的权限管理中台服务,在神领物流项目中,我们使用权限系统管理企业内部员工,比如:快递员、司机、管理员等。
在权限管家中可以管理用户,管理后台系统的菜单,以及角色的管理。
1.2、逻辑模型
权限管家的接口根据管理范围分为公司级、应用级和系统接口,如下图:
2、部署安装
参考:https://sl-express.itheima.net/#/zh-cn/base-service?id=权限管家
3、登录
登录地址:http://auth.sl-express.com/api/authority/static/index.html#/login
用户名密码:admin/123456
4、应用管理
权限管家是一个多应用的管理系统,所以要接入权限管家首先需要创建应用。
创建成功:
5、组织管理
一般公司会设置不同的组织结构用来管理人员,比如:总部、分公司、人事部、行政部、财务部、物流部、物流转运等。
添加组织,组织是一颗树,所以需要选择上级组织:
添加完成:
6、进入应用
对于应用的操作需要进入到应用中才能操作:
进入应用后,可以看到左侧菜单有3项管理:【用户管理】、【菜单管理】、【角色管理】
对应的后台系统的菜单列表:(不要修改)
应用中的角色:
7、新增用户
新增用户需要【返回权限管家】进行操作,在【用户管理】中【新增用户】:
新增用户:
添加成功:
8、分配角色
现在为【test01】分配快递员角色,怎么操作呢?
首先需要进入到【神领物流】应用,在【用户管理】中分配角色:
这样,test01就拥有了【快递员】角色了。
同理,可以添加其他的用户了。
9、SDK使用说明
9.1、关于authority-sdk
authority-sdk是基于authority-sdk的restful接口实现的Java SDK的封装,实现了token、组织、菜单、角色等功能。
9.2、快速集成使用
authority-sdk提供了两种方式与业务系统对接,分别是:
- java sdk方式
- Spring Boot集成方式
9.3、使用方法
9.3.1、java sdk方式
第一步,导入maven依赖
<dependency>
<groupId>com.itheima.em.auth</groupId>
<artifactId>authority-sdk</artifactId>
<version>{version}</version>
</dependency>
第二步,实例化AuthTemplate对象
String host = "127.0.0.1"; //Authority服务地址
int port = 8764; //Authority服务端口
int timeout = 1000; //http请求的超时时间,不传值默认为10S
//token,非登录请求都需要带上,一般情况下登录成功后将该数据放入缓存中
String token = "eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIxIiwiYWNjb3VudCI6ImFkbWluIiwibmFtZSI6IuW5s-WPsOeuoeeQhuWRmCIsIm9yZ2lkIjo4NzQyMjc2MTUxNzM0NDk4MjUsInN0YXRpb25pZCI6ODU3OTQwMTU3NDYwOTU3NTM3LCJhZG1pbmlzdHJhdG9yIjp0cnVlLCJleHAiOjE2NTEyNTkyODB9.anqT0MD9zAr13KG9OE4mqHHK2UMCOXUjeMrEsN1wy9_a14zFbjPkiDZ8dM7JirsAgj61yvshoP6pqBImdmyilQN-iFSa_ci15Ii4HhfFE1mcaRon3ojX_T9ncjHKuF9Y9ZPKT68NOzOfCwvhDrG_sDiaI1C-TwEJmhLM78FhwAI";
//应用ID,非登录请求都需要带上,该参数表示你需要查询哪个应用相关数据,一般情况下置于配置文件中
Long applicationId = 1L;
//登录获取token
AuthTemplate authTemplate = new AuthTemplate(host,port,TIME_OUT);
Result<LoginDTO> result = authTemplate.opsForLogin().token("admin","123456");
//后续基于AuthTemplate可以调用各种服务
AuthTemplate authTemplate = new AuthTemplate(host,port,TIME_OUT,token,applicationId);
Result<List<MenuDTO>> result = authTemplate.opsForPermission().getMenu();
log.info("菜单:{}", JSONObject.toJSONString(result));
9.3.2、Spring Boot集成方式
第一步,导入maven依赖
<dependency>
<groupId>com.itheima.em.auth</groupId>
<artifactId>itcast-auth-spring-boot-starter</artifactId>
<version>1.0</version>
</dependency>
<!-- 如果是SNAPSHOT版本,如要在项目的pom.xml文件中引入快照版源 -->
<repositories>
<repository>
<id>sonatypeSnapshots</id>
<name>Sonatype Snapshots</name>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
</repositories>
第二步,配置application.yml文件
itcast:
authority:
host: 127.0.0.1 #authority服务地址,根据实际情况更改
port: 8764 #authority服务端口
timeout: 10000 #http请求的超时时间
第三步,使用用例
package com.example.demo.service;
import com.alibaba.fastjson.JSONObject;
import com.itheima.auth.sdk.AuthTemplate;
import com.itheima.auth.sdk.common.Result;
import com.itheima.auth.sdk.dto.LoginDTO;
import com.itheima.auth.sdk.dto.MenuDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.List;
@Slf4j
@Service
public class AuthService {
@Value("${itcast.authority.host}")
private String host;
@Value("${itcast.authority.port}")
private int port;
private final static int TIME_OUT = 10000;
/**
* 登录获取token
* @param account
* @param password
*/
public void login(String account, String password) {
AuthTemplate authTemplate = new AuthTemplate(host,port);
Result<LoginDTO> loginDTO = authTemplate.opsForLogin().token(account, password);
log.info("登录结果:{}", JSONObject.toJSONString(loginDTO));
}
}