iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >基于resty security的Api权限控制与事务支持的方法
  • 263
分享到

基于resty security的Api权限控制与事务支持的方法

2023-06-29 09:06:49 263人浏览 八月长安
摘要

这篇文章主要介绍了基于resty security的api权限控制与事务支持的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于resty security的Api权限控制与事务支持的方

这篇文章主要介绍了基于resty security的api权限控制与事务支持的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于resty security的Api权限控制与事务支持的方法文章都会有所收获,下面我们一起来看看吧。

让数据操作处于事务控制下

1. 在Appconfig里配置事务拦截器

public void configInterceptor(InterceptorLoader interceptorLoader) {    //事务的拦截器 @Transaction    interceptorLoader.add(new TransactionInterceptor());}

2. 在Resource的方法上使用Transaction注解配置事务

@API("/users")public class UserResource extends ApiResource {    @POST  @Transaction  public User save(User user,UserInfo info) {    return user.save() && info.save();  }}

 对Api进行权限控制

1. 设计权限数据结构

DROP TABLE IF EXISTS sec_user;CREATE TABLE sec_user (  id            BIGINT       NOT NULL AUTO_INCREMENT PRIMARY KEY,  username      VARCHAR(50)  NOT NULL COMMENT '登录名',  providername  VARCHAR(50)  NOT NULL COMMENT '提供者',  email         VARCHAR(200) COMMENT '邮箱',  mobile        VARCHAR(50) COMMENT '手机',  passWord      VARCHAR(200) NOT NULL COMMENT '密码',  avatar_url    VARCHAR(255) COMMENT '头像',  first_name    VARCHAR(10) COMMENT '名字',  last_name     VARCHAR(10) COMMENT '姓氏',  full_name     VARCHAR(20) COMMENT '全名',  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP   NOT NULL,  updated_at TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,  deleted_at TIMESTAMP NULL) ENGINE =InnoDB DEFAULT CHARSET =utf8 COMMENT ='用户';DROP TABLE IF EXISTS sec_user_info;CREATE TABLE sec_user_info (  id          BIGINT    NOT NULL AUTO_INCREMENT PRIMARY KEY,  user_id     BIGINT    NOT NULL COMMENT '用户id',  creator_id  BIGINT COMMENT '创建者id',  gender      INT DEFAULT 0 COMMENT '性别0男,1女',  province_id BIGINT COMMENT '省id',  city_id     BIGINT COMMENT '市id',  county_id   BIGINT COMMENT '县id',  street      VARCHAR(500) COMMENT '街道',  zip_code    VARCHAR(50) COMMENT '邮编',  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP   NOT NULL,  updated_at TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,  deleted_at TIMESTAMP NULL) ENGINE =InnoDB DEFAULT CHARSET =utf8 COMMENT ='用户信息';DROP TABLE IF EXISTS sec_role;CREATE TABLE sec_role (  id         BIGINT    NOT NULL AUTO_INCREMENT PRIMARY KEY,  name       VARCHAR(50)   NOT NULL COMMENT '名称',  value      VARCHAR(50)  NOT NULL COMMENT '值',  intro      VARCHAR(255) COMMENT '简介',  pid        BIGINT DEFAULT 0 COMMENT '父级id',  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP   NOT NULL,  updated_at TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,  deleted_at TIMESTAMP NULL) ENGINE =InnoDB DEFAULT CHARSET =utf8 COMMENT ='角色';DROP TABLE IF EXISTS sec_user_role;CREATE TABLE sec_user_role (  id      BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,  user_id BIGINT NOT NULL,  role_id BIGINT NOT NULL) ENGINE =InnoDB DEFAULT CHARSET =utf8 COMMENT ='用户角色';DROP TABLE IF EXISTS sec_permission;CREATE TABLE sec_permission (  id         BIGINT      NOT NULL AUTO_INCREMENT PRIMARY KEY,  name       VARCHAR(50) NOT NULL COMMENT '名称',  method      VARCHAR(10) NOT NULL COMMENT '方法',  value      VARCHAR(50) NOT NULL COMMENT '值',  url        VARCHAR(255) COMMENT 'url地址',  intro      VARCHAR(255) COMMENT '简介',  pid        BIGINT DEFAULT 0 COMMENT '父级id',  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP   NOT NULL,  updated_at TIMESTAMP NULL ON UPDATE CURRENT_TIMESTAMP,  deleted_at TIMESTAMP NULL) ENGINE =InnoDB DEFAULT CHARSET =utf8 COMMENT ='权限';DROP TABLE IF EXISTS sec_role_permission;CREATE TABLE sec_role_permission (  id            BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,  role_id       BIGINT NOT NULL,  permission_id BIGINT NOT NULL) ENGINE =InnoDB DEFAULT CHARSET =utf8 COMMENT ='角色权限';

2. 实现AuthenticateService权限数据加载接口

public class MyAuthenticateService implements AuthenticateService {    public Principal getPrincipal(String username) {    Principal<User> principal=null;    User u = User.dao.findBy("username=?", username);    if (u != null) {      principal = new Principal<User>(u.getStr("username"), u.getStr("password"), new HashSet<String>(u.getPermissions()), u);    }    return principal;  }    public Set<Credential> getAllCredentials() {    List<Permission> permissions = Permission.dao.findBy("deleted_at is null");    Set<Credential> credentials = new HashSet<Credential>();    for (Permission permission : permissions) {      credentials.add(new Credential(permission.getStr("method"), permission.getStr("url"), permission.getStr("value")));    }    return credentials;  }}

3. 在AppConfig里配置SecurityInterceptor权限拦截器

public void configInterceptor(InterceptorLoader interceptorLoader) {    //权限拦截器 2表示用户登录的最大session数量 MyAuthenticateService 数据加载实现类    interceptorLoader.add(new SecurityInterceptor(2, new MyAuthenticateService()));}

4. 模拟的用户数据

-- create role--INSERT INTO sec_role(name, value, intro, pid,created_at)VALUES ('超级管理员','R_ADMIN','',0, current_timestamp),       ('销售','R_SALER','',1,current_timestamp),       ('财务','R_FINANCER','',1,current_timestamp),       ('设置','R_SETTER','',1,current_timestamp);-- create permission--INSERT INTO sec_permission( name,method, value, url, intro,pid, created_at)VALUES ('订单','*','P_ORDER','/api/v1.0/orders/**','订单访问权限',0,current_timestamp),       ('销售','*','P_SALE','/api/v1.0/sales/**','销售访问权限',0,current_timestamp),       ('财务','*','P_FINANCE','/api/v1.0/finances/**','财务访问权限',0,current_timestamp),       ('仓库','*','P_STORE','/api/v1.0/stores/**','仓库访问权限',0,current_timestamp),       ('设置','*','P_SETTING','/api/v1.0/settings/**','设置访问权限',0,current_timestamp);INSERT INTO sec_role_permission(role_id, permission_id)VALUES (1,1),(1,2),(1,3),(1,4),(1,5),       (2,1),(2,2),(2,4),       (3,1),(3,2),(3,3),(3,4),       (4,5);-- user data---- create  admin--INSERT INTO sec_user(username, providername, email, mobile, password, avatar_url, first_name, last_name, full_name, created_at)VALUES ('admin','dreampie','<a href="https://dreampie.gitbooks.io/cdn-cgi/l/email-protection" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"          target="_blank" >[email protected]</a>','18611434500','a217d8ac340ee5da8098bff32a5769ebad5d4cfd74adebe6c7020db4dc4c3Df517f56f6bc41882deb47814bd060db6f1e225219b095d7906d2115ba9e8ab80a0','','仁辉','王','仁辉·王',current_timestamp),       ('saler','dreampie','<a href="Https://dreampie.gitbooks.io/cdn-cgi/l/email-protection" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"          target="_blank" >[email protected]</a>','18611434500','a217d8ac340ee5da8098bff32a5769ebad5d4cfd74adebe6c7020db4dc4c3df517f56f6bc41882deb47814bd060db6f1e225219b095d7906d2115ba9e8ab80a0','','仁辉','王','仁辉·王',current_timestamp),       ('financer','dreampie','<a href="https://dreampie.gitbooks.io/cdn-cgi/l/email-protection" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"          target="_blank" >[email protected]</a>','18611434500','a217d8ac340ee5da8098bff32a5769ebad5d4cfd74adebe6c7020db4dc4c3df517f56f6bc41882deb47814bd060db6f1e225219b095d7906d2115ba9e8ab80a0','','仁辉','王','仁辉·王',current_timestamp),       ('setter','dreampie','<a href="https://dreampie.gitbooks.io/cdn-cgi/l/email-protection" rel="external nofollow"  rel="external nofollow"  rel="external nofollow"  rel="external nofollow"          target="_blank" >[email protected]</a>','18611434500','a217d8ac340ee5da8098bff32a5769ebad5d4cfd74adebe6c7020db4dc4c3df517f56f6bc41882deb47814bd060db6f1e225219b095d7906d2115ba9e8ab80a0','','仁辉','王','仁辉·王',current_timestamp);-- create user_info--INSERT INTO sec_user_info(user_id, creator_id, gender,province_id,city_id,county_id,street,created_at)VALUES (1,0,0,1,2,3,'人民大学',current_timestamp),       (2,0,0,1,2,3,'人民大学',current_timestamp),       (3,0,0,1,2,3,'人民大学',current_timestamp),       (4,0,0,1,2,3,'人民大学',current_timestamp);-- create user_role--INSERT INTO sec_user_role( user_id, role_id)VALUES (1,1),(2,2),(3,3),(4,4);

关于“基于resty security的Api权限控制与事务支持的方法”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“基于resty security的Api权限控制与事务支持的方法”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 基于resty security的Api权限控制与事务支持的方法

本文链接: https://www.lsjlt.com/news/324181.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于resty security的Api权限控制与事务支持
    目录让数据操作处于事务控制下1.在Appconfig里配置事务拦截器2.在Resource的方法上使用Transaction注解配置事务 对Api进行权限控制1.设计权限数...
    99+
    2024-04-02
  • 基于resty security的Api权限控制与事务支持的方法
    这篇文章主要介绍了基于resty security的Api权限控制与事务支持的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于resty security的Api权限控制与事务支持的方...
    99+
    2023-06-29
  • 基于Spring Security前后端分离的权限控制系统问题
    目录1. 引入maven依赖2. 建表并生成相应的实体类3. 自定义UserDetails4. 自定义各种Handler5. Token处理6. 访问控制7. 配置WebSecuri...
    99+
    2024-04-02
  • Spring Security实现基于RBAC的权限表达式动态访问控制的操作方法
    目录资源权限表达式Spring Security中的实现MethodSecurityExpressionHandler思路以及实现配置和使用昨天有个粉丝加了我,问我如何实现类似shi...
    99+
    2024-04-02
  • vue权限控制与管理的实现方法是什么
    本篇内容介绍了“vue权限控制与管理的实现方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、 菜单权限菜单权限:控制用户在系统中能...
    99+
    2023-07-05
  • ASP.NET Core基于滑动窗口实现限流控制的方法
    今天小编给大家分享一下ASP.NET Core基于滑动窗口实现限流控制的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-06-29
  • vue各种权限控制与管理实现的方法是什么
    这篇“vue各种权限控制与管理实现的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue各种权限控制与管理实现的方...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作