token

消息通信机制NSNotificationCenter -备

依然范特西╮ 提交于 2020-03-30 03:33:39
消息通信机制NSNotificationCenter的学习。最近写程序需要用到这类,研究了下,现把成果和 NSNotificationCenter是专门供程序中不同类间的消息通信而设置的,使用起来极为方便, 长话短说。 设置通知,就是说要在什么地方(哪个类)接受通知,一般在初始化中做。 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(test:) name:@"test" object:nil]; 我仅对以上参数做以说明:addObserver 这个是观察者,就是说 在什么地方接收通知; selector 这个是收到通知后,调用何种方法; name: 这个是通知的名字,也是通知的唯一标示,编译器就通过这个找到通知的。 发送通知,就是说此时要调用观察者处的方法。 [[NSNotificationCenter defaultCenter] postNotificationName:@"test" object:searchFriendArray]; 我仅对以上参数做以说明: postNotificationName:通知的名字,也是通知的唯一标示,编译器就通过这个找到通知的。 object:传递的参数 发送通知时,默认调用test方法。 - (void) test:

实验一、词法分析实验

戏子无情 提交于 2020-03-29 21:36:21
实验一、词法分析实验 商业软件工程 苏伟祥 201506110160 一、实验目的 编制一个此法分析程序 二、实验内容需求 输入源程序字符串 输出二元组(种别,单词本身) 待分析语言的词法规则 三、实验方法、步骤以及结果测试 1.源文件名: 2.原理分析及流程图 3.主要程序及解释 do{ scanf("%c",&ch); prog[p++]=ch; }while(ch!='#'); p=0; printf("词法分析结果如下:\n"); do{ sum=0; for(m=0;m<8;m++) token[m++]= NULL; ch=prog[p++]; m=0; while((ch==' ')||(ch=='\n')) ch=prog[p++]; if(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A'))) { while(((ch<='z')&&(ch>='a'))||((ch<='Z')&&(ch>='A'))||((ch>='0')&&(ch<='9'))) { token[m++]=ch; ch=prog[p++]; } p--; syn=10; for(n=0;n<6;n++) if(strcmp(token,rwtab[n])==0) { syn=n+1; break; } } else if((ch>='0')&&(ch<=

词法分析程序实验

做~自己de王妃 提交于 2020-03-29 21:34:07
词法分析程序实验 一、 实验目的 编制一个词法分析程序。 二、 实验内容和要求 输入:源程序字符串 输出:二元组(种别,单词符号本身)。 三、 实验方法、步骤及结果测试 源程序名: bianyiyuanli .c 可执行程序名: bianyiyuanli .exe 原理分析及流程图 通过一些for循环和while循环进行一个个的翻译。 源程序如下: #include<stdio.h> #include<string.h> #include<stdlib.h> char TOken[10];//分开进行比较 char ch; /*char rwtab[6]={"begin","if","then","while","do","end"};*/ char r1[]={"auto"}; char r2[]={"break"}; char r3[]={"case"}; char r4[]={"char"}; char r5[]={"const"}; char r6[]={"continue"}; char r7[]={"default"}; char r8[]={"do"}; char r9[]={"double"}; char r10[]={"else"}; char r11[]={"enum"}; char r12[]={"extern"}; char r13[]={"float"};

实验一、词法分析

戏子无情 提交于 2020-03-29 21:00:38
实验一、词法分析 一、 实验目的 编制一个词法分析程序 二、 实验内容和要求 输入:源程序字符串 输出:二元组(种别,单词本身) 待分析语言的词法规则 三、 实验方法、步骤及结果测试 1. 原理分析及流程图 主要总体设计问题。 (包括存储结构,主要算法,关键函数的实现等) 1. 主要程序段及其解释: 实现主要功能的程序段,重要的是程序的注释解释。 #include <stdio.h> #include <string.h> char prog[30],token[5],ch; int syn,p,m,n,sum; char *rwtab[6]={"begin","if","then","while","do","end"}; scaner(); main() {p=0; printf("请输入需要分析的字符串,以“#”结束):"); do{ scanf("%c",&ch); prog[p++]=ch; }while(ch!='#'); p=0; do{ scaner(); switch(syn) { case 11:printf("( %-10d%5d )\n",sum,syn); break; case -1:printf("you have input a wrong string\n"); getch(); exit(0); default: printf("( %-10s

实验报告1

狂风中的少年 提交于 2020-03-29 20:12:05
实验一、词法分析器实验 专业:商业软件工程一班 姓名:王梓斌 学号:201506110116 一、 实验目的 编写一个词法分析程序。 二、 实验内容和要求 输入:源程序字符串 输出:二元组(种别,单词本身) 待分析语言的词法规则 三、 实验方法、步骤及结果测试 1. 源程序名:压缩包文件( rar 或 zip )中源程序名 kenk.c 可执行程序名: kenk.exe 2. 原理分析及流程图 对字符串表示的源程序 从左到右进行扫描和分解 根据词法规则 识别出一个一个具有独立意义的单词符号 以供语法分析之用 发现词法错误,则返回出错信息 3. 主要 程序段及其解释: #include<stdio.h> #include<stdlib.h> #include<string.h> #define _KEY_WOED_END "waiting for your expanding" //关键字结束标志 typedef struct { int typenum; char * word; }WORD; char input[255]; //输入换缓冲区 char token[255]=""; //单词缓冲区 int p_input; //输入换缓冲区指针 int p_token; //单词缓冲区指针 char ch; //当前所读的字符 char *rwtab[]={"begin","if

identityserver4源码解析_2_元数据接口

独自空忆成欢 提交于 2020-03-29 02:31:39
目录 identityserver4源码解析_1_项目结构 identityserver4源码解析_2_元数据接口 identityserver4源码解析_3_认证接口 identityserver4源码解析_4_令牌发放接口 identityserver4源码解析_5_查询用户信息接口 identityserver4源码解析_6_结束会话接口 identityserver4源码解析_7_查询令牌信息接口 identityserver4源码解析_8_撤销令牌接口 协议 这一系列我们都采用这样的方式,先大概看下协议,也就是需求描述,然后看idsv4怎么实现的,这样可以加深理解。 元数据接口的协议地址如下: https://openid.net/specs/openid-connect-discovery-1_0.html 摘要 该协议定义了一套标准,用户能够获取到oidc服务的基本信息,包括OAuth2.0相关接口地址。 Webfinger - 网络指纹 先了解一下Webfinger这个概念。 WebFinger可以翻译成网络指纹,它定义了一套标准,描述如何通过标准的HTTP方法去获取网络实体的资料信息。WebFinger使用JSON来描述实体信息。 https://tools.ietf.org/html/rfc7033 查询oidc服务元数据 - OpenID Provider

IdentityServer4源码解析_4_令牌发放接口

回眸只為那壹抹淺笑 提交于 2020-03-29 02:30:20
目录 identityserver4源码解析_1_项目结构 identityserver4源码解析_2_元数据接口 identityserver4源码解析_3_认证接口 identityserver4源码解析_4_令牌发放接口 identityserver4源码解析_5_查询用户信息接口 identityserver4源码解析_6_结束会话接口 identityserver4源码解析_7_查询令牌信息接口 identityserver4源码解析_8_撤销令牌接口 协议 Token接口 oidc服务需要提供token接口,提供AccessToken,IdToken,以及RefreshToken(可选)。在授权码模式下,token接口必须使用https。 请求 必须使用POST方法,使用x-www-form-urlencoded序列化参数,clientId:clientSecret使用Basic加密放在Authorization头中 POST /token HTTP/1.1 Host: server.example.com Content-Type: application/x-www-form-urlencoded Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW grant_type=authorization_code&code

OpenID Connect 验证

一曲冷凌霜 提交于 2020-03-28 18:05:46
OpenID Connect Authentication 几乎所有的 Web 应用程序都提示用户创建账号并登录。为了创建账号,用户被要求提供他们的名字、电子邮件、口令、以及确认口令。不仅这些需要耗费用户很大的负担(50次以上的击键),这还带来安全顾虑,由于用户经常在不同的站点使用相同的口令,而且许多站点并不能有效保护这些凭证。 OpendID 开启了联合标识,这样用户可以使用同样的标识在众多 Web 应用程序之间进行验证,用户和 Web 应用程序都信任标识的提供方,例如 Google、Yahoo 和 Facebook,它们保存用户的配置信息并受应用程序的委托验证用户。这消除了每个 Web 应用程序创建自己的自定义的验证系统的需要,对用户来说,注册和登录遍及互联网的站点也变得更为简易和便捷。 OpenID Connect 是下一代的 OpenID,开发 OpenID Connect 考虑到两个关键因素: 向站点传递访问身份验证信息(用户标识)的权限,非常类似与通过委托访问用户的数据(例如用户的日程)。开发人员不应该为这两种不同的用例使用完全不同的协议。特别是许多开发者需要在应用程序中处理这两者。 规范应该模块化,在不需要实现自动发现、关联和其他复杂情况的情况,保持规范与上一个版本的 OpenID 的延续性。 基本的 OpenID Connect 流为: 通过将用户重定向到标识提供者

identityserver4源码解析_3_认证接口

别等时光非礼了梦想. 提交于 2020-03-28 03:51:47
目录 identityserver4源码解析_1_项目结构 identityserver4源码解析_2_元数据接口 identityserver4源码解析_3_认证接口 identityserver4源码解析_4_令牌发放接口 identityserver4源码解析_5_查询用户信息接口 identityserver4源码解析_6_结束会话接口 identityserver4源码解析_7_查询令牌信息接口 identityserver4源码解析_8_撤销令牌接口 协议 五种认证方式 Authorization Code 授权码模式 :认证服务返回授权码,后端用clientid和密钥向认证服务证明身份,使用授权码换取id token 和/或 access token。本模式的好处是由后端请求token,不会将敏感信息暴露在浏览器。本模式允许使用refreshToken去维持长时间的登录状态。使用此模式的客户端必须有后端参与,能够保障客户端密钥的安全性。此模式从authorization接口获取授权码,从token接口获取令牌。 Implict 简化模式 :校验跳转URI验证客户端身份之后,直接发放token。通常用于纯客户端应用,如单页应用javascript客户端。因为没有后端参与,密钥存放在前端是不安全的。由于安全校验较宽松

springboot oauth2 token续签

我是研究僧i 提交于 2020-03-26 11:42:29
3 月,跳不动了?>>> 项目中使用了spring oauth2作为接口的权限认证,由于是集群环境,使用了redis存储token信息。一开始使用并没有注意,再后来app在使用的过程中,用户一直操作着,会突然中断跳到登录页,这种体验是很不友好的。问了下客户端的小伙伴,在token过期时,并没有调用刷新token的接口。好吧~那就接口来处理吧。 首先确定的时token的存储和读取都没有问题,就是每次请求后,token 的过期时间没有更新,才会导致token过期操作中断。所以我们要做的就是在每次正常请求接口后,更新token的过期时间。 看了下RedisTokenStore的源码 再看下readAuthentication(OAuth2AccessToken token)方法,只是读取了token之后就返回了,并没有更新的操作 因此,在readAuthentication(OAuth2AccessToken token)方法上改造,其他方法原样照抄RedisTokenStore就行 改造后的结果如下 这样就算改造完成了。 然后在自己的 AuthorizationServer 中注入自己改造的redistokenStore,类似这种 然后再配置token的存储方式的时候,使用自己改造的redisTokenStore,如下 这样redis token续签的功能就实现了。 来源: