202206 CSP认证 | 角色授权

2024-03-17 18:20
文章标签 csp 认证 角色 授权 202206

本文主要是介绍202206 CSP认证 | 角色授权,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

角色授权
fine,又是一道acwing上TLE但是平台通过了的,那就酱吧…
直接跟着题目来模拟的…先找到每个用户授予的所有角色,包括用户本身和它所属的用户组。
然后遍历这个角色集合,看是否有操作权限,种类权限以及资源名称权限。如果同时在一个角色下符合三种权限,则此时可以进行操作,退出角色集合的遍历。

跑了两次都是满分(因为我用了auto所以提交的cpp14)
在这里插入图片描述
以下是平台满分代码:

#include<bits/stdc++.h>
using namespace std;
unordered_map<string, unordered_set<string> > role_opt;   //角色可进行的操作
unordered_map<string, unordered_set<string> > role_rtype;  //角色所具有的资源种类
unordered_map<string, unordered_set<string> > role_rname;  //角色可以操作的资源名称unordered_map<string, unordered_set<string> > u_role;     //用户授予的角色名称
unordered_map<string, unordered_set<string> > g_role;     //用户组授予的角色名称int main()
{ios::sync_with_stdio(false);cin.tie(0);int n, m, q;cin >> n >> m >> q;for(int i = 0;i < n;i ++){  //录入角色信息string name, str; int nv, no, nn;cin >> name >> nv;while(nv --){cin >> str;role_opt[name].insert(str);}cin >> no;while(no --){cin >> str;role_rtype[name].insert(str);}cin >> nn;//如果列表为空,则没有限制if(!nn)  role_rname[name].insert("*");while(nn --){cin >> str;role_rname[name].insert(str);}}for(int i = 0;i < m;i ++){string name, str1, str2; int ns;cin >> name >> ns;while(ns --){cin >> str1 >> str2;if(str1 == "u"){u_role[str2].insert(name);}else{g_role[str2].insert(name);}}}while(q --){string uname, op, type, rname, str; int ng;unordered_set<string> group;  //用户组列表cin >> uname >> ng;while(ng --){cin >> str; group.insert(str);}cin >> op >> type >> rname;unordered_set<string> role;  //该用户所授予的全部角色名称for(auto x : u_role[uname]){role.insert(x);}for(auto gname : group){  //每一个用户组for(auto x : g_role[gname]){role.insert(x);}}bool flag = false;for(auto x : role){  //遍历每一个角色bool flag_op = false, flag_type = false, flag_rname = false;if(role_opt[x].count(op) || role_opt[x].count("*")) flag_op = true;if(role_rtype[x].count(type) || role_rtype[x].count("*")) flag_type = true;if(role_rname[x].count(rname) || role_rname[x].count("*")) flag_rname = true;if(flag_op && flag_rname && flag_type){cout << "1\n";flag = true;break;}}if(!flag) cout << "0\n";}return 0;
}

这篇关于202206 CSP认证 | 角色授权的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/819752

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

简单的角色响应鼠标而移动

actor类 //处理移动距离,核心是找到角色坐标在世界坐标的向量的投影(x,y,z),然后在世界坐标中合成,此CC是在地面行走,所以Y轴投影始终置为0; using UnityEngine; using System.Collections; public class actor : MonoBehaviour { public float speed=0.1f; CharacterCo

ccfcsp-202206(1、2、3)

202206-1 归一化处理 #include <bits/stdc++.h>using namespace std;int main() {int n;cin >> n;vector<double> vec(n);double ave = 0;for(int i = 0; i < n; i++){cin >> vec[i];ave += vec[i];}ave /= n;double va

CSP-J基础之数学基础 初等数论 一篇搞懂(一)

文章目录 前言声明初等数论是什么初等数论历史1. **古代时期**2. **中世纪时期**3. **文艺复兴与近代**4. **现代时期** 整数的整除性约数什么样的整数除什么样的整数才能得到整数?条件:举例说明:一般化: 判断两个数能否被整除 因数与倍数质数与复合数使用开根号法判定质数哥德巴赫猜想最大公因数与辗转相除法计算最大公因数的常用方法:举几个例子:例子 1: 计算 12 和 18

【Shiro】Shiro 的学习教程(二)之认证、授权源码分析

目录 1、背景2、相关类图3、解析3.1、加载、解析阶段3.2、认证阶段3.3、授权阶段 1、背景 继上节代码,通过 debug 进行 shiro 源码分析。 2、相关类图 debug 之前,先了解下一些类的结构图: ①:SecurityManager:安全管理器 DefaultSecurityManager: RememberMeManager:实现【记住我】功能

OpenStack离线Train版安装系列—3控制节点-Keystone认证服务组件

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack Victoria版——3.控制节点-Keystone认证服务组件

3.控制节点-Keystone认证服务组件 更多步骤:OpenStack Victoria版安装部署系列教程 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版 离线安装部署系列教程(全) OpenStack Train版 离线安装部署系列教程(全) 欢迎留言沟通,共同进步。 文章目录 创建key

CSP-J基础之数学基础 初等数论 一篇搞懂(二)

文章目录 前言算术基本定理简介什么是质数?举个简单例子:重要的结论:算术基本定理公式解释:举例: 算术基本定理的求法如何找出质因数:举个简单的例子: 重要的步骤:C++实现 同余举个例子:同余的性质简介1. 同余的自反性2. 同余的对称性3. 同余的传递性4. 同余的加法性质5. 同余的乘法性质 推论 总结 前言 在计算机科学和数学中,初等数论是一个重要的基础领域,涉及到整数