rbac

恕我直言你可能真的不会java第7篇:像使用SQL一样排序集合

时光怂恿深爱的人放手 提交于 2020-08-14 06:33:26
在开始之前,我先卖个关子提一个问题:我们现在有一个Employee员工类。 [@Data](https://my.oschina.net/difrik) @AllArgsConstructor public class Employee { private Integer id; private Integer age; //年龄 private String gender; //性别 private String firstName; private String lastName; } 你知道怎么对一个Employee对象组成的List集合, 先按照性别字段倒序排序,再按照年龄的倒序 进行排序么?如果您不知道4行代码以内的解决方案(其实是1行代码就可以实现,但笔者格式化为4行),我觉得您有必要一步步的看下去。 一、字符串List排序 cities是一个字符串数组。 注意london的首字母是小写的。 List<String> cities = Arrays.asList( "Milan", "london", "San Francisco", "Tokyo", "New Delhi" ); System.out.println(cities); //[Milan, london, San Francisco, Tokyo, New Delhi] cities.sort

一、Spring Security 表单登录项目

徘徊边缘 提交于 2020-08-13 12:27:39
一、 项目 搭建 依赖 < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-security </ artifactId > </ dependency > 编写一个控制层接口 @RestController public class HelloController { @GetMapping( "/" ) public String hello() { return "登陆成功" ; } } 二、表单登录 启动后访问接口会重定向到登录页 在控制台生成UUID 的临时密码字符串,默认用户名为user Using generated security password: f0af6a0a-fbef-465e-941a-ec9afbaa9af9 登录后我们可访问控制层接口。 三、自定义配置 yml配置 密码是springboot auto配置,在SecurityProperties中定义,所以我们可在yml中自定义。 PasswordEncoder Spring Security 提供了多种密码加密方案,官方推荐使用 BCryptPasswordEncoder,BCryptPasswordEncoder 使用 BCrypt 强哈希函数,

Spring Boot 2.3 新特配置文件属性跟踪

大城市里の小女人 提交于 2020-08-13 11:13:43
背景 当我们使用 spring boot 在多环境打包,配置属性在不同环境的值不同,如下: spring: profiles: active: @project.profile@ #根据maven 动态配置profile --- spring: profiles: dev demo: lengleng_dev --- spring: profiles: prd demo: lengleng_prd 或者使用 spring cloud 配置中心 (nacos/config)等 再有就是 应用配置的同一个属性,值的来源可能来自 配置文件、环境变量、启动参数 等等。 很多情况由于 如上配置的复杂性,应用在读取配置的时候,并不是我们预期的值 ,比如我们想使用是配置文件 dev 环境的值,却被环境变量的 或者其他的数据覆盖等,这些往往只有等我们运行时,输出日志才能发现错误原因。 解决方案 spring boot 2.3 Actuator 提供 /actuator/configprops 端点 (之前版本也有此端点,但是行为发生变化了 /actuator/env 保持一致 ),提供对配置文件属性跟踪功能, 方便我们在 spring boot 应用中,实时的获取配置文件实际加载值 。 如何使用 引入 actuator 依赖 <dependency> <groupId>org

traefik Ingress https配置

故事扮演 提交于 2020-08-13 04:02:18
一、概述 1、理解Ingress 简单的说,ingress就是从kubernetes集群外访问集群的入口,将用户的URL请求转发到不同的service上。Ingress相当于nginx、apache等负载均衡方向代理服务器,其中还包括规则定义,即URL的路由信息,路由信息得的刷新由 Ingress controller 来提供。 2、理解Ingress Controller Ingress Controller 实质上可以理解为是个监视器,Ingress Controller 通过不断地跟 kubernetes API 打交道,实时的感知后端 service、pod 等变化,比如新增和减少 pod,service 增加与减少等;当得到这些变化信息后,Ingress Controller 再结合下文的 Ingress 生成配置,然后更新反向代理负载均衡器,并刷新其配置,达到服务发现的作用。 3、RBAC 在开始之前,需要先了解一下什么是RBAC。RBAC(基于角色的访问控制)使用 rbac.authorization.k8s.io API 组来实现权限控制,RBAC 允许管理员通过 Kubernetes API 动态的配置权限策略。在 1.6 版本中 RBAC 还处于 Beat 阶段,如果想要开启 RBAC 授权模式需要在 apiserver 组件中指定 -

跟我学Springboot开发后端管理系统7:Matrxi-Web权限设计

走远了吗. 提交于 2020-08-12 21:06:48
Matrxi-Web权限设计 对于一个后端系统来说,权限是基础设施,是安全保障。没有权限,系统可能随时面临各种风险,所以权限设计对后端系统来说至关重要。在Javaweb开发中,有很多权限开发的框架,比如shrio、Spring security,但是都比较重量级。作为一个后端管理系统来说,用这样的权限开发框架会拖慢开发进度。所以在这个项目中,我写了一个更简单的权限控制框架,使用很简单。 权限设计思路 在Matrxi-Web项目中,请求需要携带Token,请求经过Filter的时候(实际项目是使用Spring MVC的HandlerInterceptor),会判断该请求Url是否有Token。如果有Token,解析Token获取用户信息,如果解析Token失败,则进入白名单判断的逻辑,如果解析成功,则请求通过。如果请求不携带Token或者解析Token失败,则判断是否Url白名单里(比如登录接口,swagger文档等接口),如果请求不在url白名单内,则提示无权限访问。 在Filter层初步判断,如果请求通过,则请求进入具体类的方法里,比如Controller的方法。如果类方法加上了自定义的注解@HasPermission,则该类在加载的时候会生成一个aroud类型的切面(即spring的aop),在执行具体类的方法前,会判断该用户是否具有对该方法的调用权限,从而起到权限控制的作用。

不想得手指关节炎?帮你提炼IDEA常用代码补全操作

可紊 提交于 2020-08-12 20:17:40
一、常用的代码补全操作 1、.for和.fori(for 循环遍历) 输入 args.for 回车(args是一个数组或集合类),则会生成for循环遍历: 输入 args.fori 回车,则会生成带有索引的for循环遍历语句: 2、sout(控制台输出语句) 代码中输入 sout 回车,会自动生成 System.out.println() 这个控制台输出打印语句: 3、psvm 在代码中输入psvm之后回车 会自动生成main函数,psvm是 public static void main 的首字母: 4、.var(为对象生成声明部分代码) 输入“xxx”.var回车,则会生成如下代码: 输入123.var回车,则会生成如下代码: 输入new ArrayList().var回车,则会生成如下代码: 5、.if(生成 if 语句) 写好一个判断条件之后加上.if,回车: 生成如下的if语句: 6、.null 与 .nn(空、非空判断) 输入args.null回车,则会生成如下代码,判断是否为null: 输入args.nn回车,则会生成如下代码,判断是否不为null: 二、常用快捷键 Ctrl + O 查看我们继承的类或者接口中的方法,以及我们要实现的方法 Ctrl+Alt+T 将代码包在一个块中,例如try/catch ;synchronized等 作用 windows 快捷键

微服务中如何设计一个权限授权服务

我是研究僧i 提交于 2020-08-12 06:25:11
基于角色的访问控制 (RBAC)   是将系统访问限制为授权用户的一种方法,是围绕角色和特权定义的与策略无关的访问控制机制, RBAC的组件 使执行用户分配变得很简单。   在组织内部, 将为各种职务创建 角色 。 执行某些操作的权限已分配给特定角色。 成员或职员(或其他系统用户)被分配了特定角色,并且通过这些角色分配获得执行特定系统功能所需的权限。 由于未直接为用户分配权限,而是仅通过其角色(一个或多个角色)获取权限,因此,对单个用户权限的管理就变成了简单地为用户帐户分配适当角色的问题。 这简化了常见操作,例如添加用户或更改用户部门。 RBAC定义了三个主要规则   1、 角色分配:仅当对象已选择或分配了角色时,对象才能行使权限。   2、 角色授权:必须为主体授权主体的活动角色。 使用上面的规则1,此规则可确保用户只能承担获得其授权的角色。   3、 权限授权:仅当对象的活动角色被授权时,对象才能行使权限。 使用规则1和2,此规则可确保用户只能行使其被授权的权限。 创建RBAC的模型 菜单   public class SysMenu { /// <summary> /// 父级 /// </summary> public int ParentId { get ; set ; } = 0 ; /// <summary> /// 菜单名称 /// </summary>

有效提高java编程安全性的12条黄金法则

廉价感情. 提交于 2020-08-11 18:59:57
安全性是软件开发中最复杂,最广泛和最重要的考量之一。Java是具有许多内置安全性功能的开发平台,java在长期的发展过程中,已经经过了很多高强度的安全测试,并经常更新安全漏洞。并且Java生态系统还包括用于分析和报告安全性问题的各种工具。 但是,即使有了可靠的开发平台,也同样要保持警惕。应用程序开发是一项复杂的工作,漏洞会隐藏起来不易发现。程序员应该在应用程序开发的每个阶段都考虑安全性,从类级别的代码编程到API端点授权都应该被考虑在内。 以下为大家介绍的基本规则,可以为构建更安全的Java应用程序奠定良好的基础。供参考学习! Java安全规则1:编写简单而强大的Java代码 漏洞喜欢隐藏在复杂代码中,因此在不牺牲功能的情况下使代码尽可能简单。在代码中公开尽可能少的信息,隐藏实施细节,支持可维护和安全的代码。下面三个技巧将大大有助于编写安全的Java代码: 充分利用 Java的访问修饰符 。为类,方法及其属性声明访问级别,可以设为private的所有内容都应该为private。 避免过度使用反射和内省 。在某些情况下,应该使用这种高级技术,但是在大多数情况下,您应该避免使用它们。使用反射消除了强类型化,可能会给代码引入漏洞和不稳定性。将类名与字符串进行比较容易出错,并且很容易导致名称空间冲突。 始终定义尽可能小的API和接口 。解耦组件并使它们在尽可能小的区域内交互

SpringBoot实现本地存储文件上传及提供HTTP访问服务

和自甴很熟 提交于 2020-08-11 11:22:57
笔者计划为大家介绍分布式文件系统,用于存储应用的图片、word、excel、pdf等文件。在开始介绍分布式文件系统之前,为大家介绍一下使用本机存储来存放文件资源。 二者的核心实现过程是一样的: 上传文件,保存文件(本节是本地磁盘) 返回文件HTTP访问服务路径给前端,进行上传之后的效果展示 一、复习 服务端接收上传的目的是提供文件的访问服务,那么对于SpringBoot而言,有哪些可以提供文件访问的静态资源目录呢? classpath:/META-INF/resources/ , classpath:/static/ , classpath:/public/ , classpath:/resources/ 这是之前我们为大家介绍的内容,从这里看出这里的静态资源都在classpath下。那么就出现问题: 应用的文件资源不能和项目代码分开存储(你见过往github上传代码,还附带项目文件数据的么?) 项目打包困难,当上传的文件越来越多,项目的打包jar越来越大。 代码与文件数据不能分开存储,就意味着文件数据的备份将变得复杂 二、文件上传目录自定义配置 怎么解决上述问题?别忘记了spring boot 为我们提供了 使用 spring.resources.static-locations 配置自定义静态文件的位置。 web: upload-path: D:/data/ spring:

.Net Core实战之基于角色的访问控制的设计

不羁的心 提交于 2020-08-11 09:04:28
前言   上个月,我写了两篇微服务的文章:《 .Net微服务实战之技术架构分层篇 》与《 .Net微服务实战之技术选型篇 》,微服务系列原有三篇,当我憋第三篇的内容时候一直没有灵感,因此先打算放一放。   本篇文章与源码原本打算实在去年的时候完成并发布的,然而我一直忙于公司项目的微服务的实施,所以该篇文章一拖再拖。如今我花了点时间整理了下代码,并以此篇文章描述整个实现思路,并开放了源码给予需要的人一些参考。   源码: https://github.com/SkyChenSky/Sikiro.RBAC RBAC   Role-Based Access Contro翻译成中文就是 基于角色的访问控制 ,文章以下我都用他的简称 RBAC 来描述。   现信息系统的 权限控制 大多数采取RBAC的思想进行实现,其 本质思想 是对系统各种的操作权限不是直接授予具体的某个用户,而是在用户集合与权限集合之间建立一个角色,作为 间接 关联。每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。   通过以上的描述,我们可以分析出以下信息:   用户与权限是通过角色间接关联的   角色的本质就是权限组(权限集合)   这样做的好处在于,不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多