小编tkd*_*_aj的帖子

JwtSecurityToken在它应该的时候不会过期

我目前在System.IdentityModels.Tokens命名空间中使用JwtSecurityToken类.我使用以下方法创建令牌:

DateTime expires = DateTime.UtcNow.AddSeconds(10);
JwtSecurityTokenHandler handler = new JwtSecurityTokenHandler();
var genericIdentity = new System.Security.Principal.GenericIdentity(username, "TokenAuth");

ClaimsIdentity identity = new ClaimsIdentity(claims);
string secret = ConfigurationManager.AppSettings["jwtSecret"].ToString();
var securityKey = new     InMemorySymmetricSecurityKey(Encoding.Default.GetBytes(secret));
var signingCreds = new SigningCredentials(securityKey,     SecurityAlgorithms.HmacSha256Signature, SecurityAlgorithms.HmacSha256Signature);
var securityToken = handler.CreateToken(
    issuer: issuer,
    audience: ConfigurationManager.AppSettings["UiUrl"].ToString(),
    signingCredentials: signingCreds,
    subject: identity,
    expires: expires,
    notBefore: DateTime.UtcNow
);
return handler.WriteToken(securityToken); 
Run Code Online (Sandbox Code Playgroud)

由于某种原因,即使将expires设置为当前时间之后的10秒,它也不会在令牌被验证之前实际抛出异常,直到大约5分钟.看到这个之后,我想也许最短的过期时间是5分钟,所以我将过期时间设置为:

DateTime.UtcNow.AddMinutes(5);
Run Code Online (Sandbox Code Playgroud)

然后它在10分钟到期,但异常消息表明过期时间设置为应该是的(用户登录后5分钟),当它显示异常中的当前时间时,它是5分钟后到期时间.因此,它似乎知道什么时候它应该过期,但它实际上并没有在过期时间后5分钟抛出异常.然后,由于令牌似乎在我将其设置为过期的任何时间添加5分钟,我将过期时间设置为:

DateTime.UtcNow.AddMinutes(-5).AddSecond(10);
Run Code Online (Sandbox Code Playgroud)

我测试了这个,到目前为止它还没有过期(超过十分钟后).有人可以解释为什么会发生这种情况以及我做错了什么?此外,如果您看到我提供的代码的任何其他内容,我将不胜感激,因为我不熟悉使用JWT和此库.

先感谢您

.net c# jwt

26
推荐指数
4
解决办法
1万
查看次数

分段故障C有限状态机

我是相对较新的C编程,我正在尝试制作分隔符检查器,但由于某种原因,每次我运行我的代码并且它获取我的输入来检查分隔符时,它有一个分段错误(核心转储)错误.

以下是主程序的代码:

int
main (void)
{
  char* mystring;
  printf ("Please enter a string\n");
  gets(mystring);
  if (fsm(mystring))
    {
      printf ("All matched");
    }
}
Run Code Online (Sandbox Code Playgroud)

它似乎永远不会进入子程序fsm,因为我在printf子程序的开头放了一个它从不出现.它会确实询问我的输入并将其打印出来,如果我将printf主程序放在子程序行之前.

这是我的原型:

boolean fsm(char[]);
Run Code Online (Sandbox Code Playgroud)

如果有任何帮助,这是子程序的开头:

boolean fsm (char mystring[])
{
  printf("here\n");
  int counter = -1;
  int state = 0;
  c_stack top;
  c_init_stack (&top);
  while (1)
    {
      switch (state)
    {
    case 0:
      counter = counter + 1;
      if (is_open (*mystring))
        state = 1;
      else if (is_close (*mystring))
        state = 2;
      else …
Run Code Online (Sandbox Code Playgroud)

c fsm segmentation-fault switch-statement fault

1
推荐指数
1
解决办法
218
查看次数

我可以强制一个元素显示其悬停效果吗?

我正在 angularjs 中创建一个表格分页指令,并且我正在使用引导程序按钮来显示页码。由于我正在制定此指令以用于工作并可能与多个应用程序一起使用,因此我将其设置为可定制的。因此,我按钮上的所有类都绑定到我作用域上的变量(基本上允许用户为每个按钮定义自己的类)。我的问题是,由于他们可以定义按钮的类,因此我无法为它们当前所在的页码的类设置具体颜色。因此,例如,如果他们单击第 3 页,我希望更改第 3 页,以便他们知道自己在哪个页面上。当您将鼠标悬停在每个引导按钮上时使用的颜色可以完美地工作,但仅当您将鼠标悬停在它们上时才会应用。

这是我想使用 ng-class 应用悬停类的地方(在 paginatedTable.html 中):

<button title="Page {{pageNumber}}" type="button" class="{{cndBtnNumbersClass}}" ng-repeat="pageNumber in cndPageNumbers"
        ng-click="cndTablePaginationNav(pageNumber)">{{pageNumber}}</button>
Run Code Online (Sandbox Code Playgroud)

这是一个工作plnkr。如果您单击其中一个页码,它会在聚焦时应用该样式,但是一旦您单击关闭,它就不再显示选择了哪个页码。

http://plnkr.co/edit/CHO6HbT4emM3VEwcNnzq?p=preview

预先感谢您的任何帮助!

javascript css twitter-bootstrap angularjs angularjs-directive

1
推荐指数
1
解决办法
2228
查看次数

else:语法不正确

我是python的新手,我正在尝试编写这个脚本来取消超过1 mb的打印作业..(它检查大小的行被设置为1 mb以确保它正常工作).由于某种原因,我的最后一个else语句一直说它语法无效.我查看是否所有括号都关闭了,我找不到一对不匹配的.有人可以告诉我为什么它说它无效?你也可以看看我的第24行(fullname = ... grep ...),以确保其语法正确吗?

#! /usr/bin/python

import os

infile = open ('test.pl', 'r')

outfile = open('print.reportpython', 'w+')

newfile = infile.readlines()

newfile.pop(0)

count = 0

firstline = newfile[0]

splitline = firstline.split()

currentuser = splitline[1]

currentuser = str(currentuser)

for line in newfile:

  newline = line.split()

  names = newline[1]

  size = int(newline[2])

  names = str(names)

  print names

  if names is currentuser:

    if size >= 1:

      os.popen ("cancel lab01-10292")

  fullname = os.popen("cat /etc/passwd |grep " + newline[1] + "cut -d':' -f5") …
Run Code Online (Sandbox Code Playgroud)

python syntax if-statement syntax-error

-1
推荐指数
1
解决办法
891
查看次数

浮动加法 2.5 + 2.5 = 4.0?RPN

下面的代码是我做反向波兰符号计算的子程序......基本上是+、-、*和/。程序中一切正常,除了当我尝试添加 2.5 和 2.5 时,程序给了我 4.0 ......我想我知道为什么,但我不知道如何解决它......现在我正在阅读所有根据此分配的要求,从命令行输入数字和运算符,然后使用该字符串并使用 sscanf 从中获取数字......我在想包含三个字符“2”、“.”的数组,和'5',并没有完全转换为浮点数......相反,我认为只有'2'是。有人可以看看我的代码并确认或否认这一点,并可能告诉我如何修复它以便我得到正确的答案吗?预先感谢您的任何帮助!

float
fsm (char mystring[])
{
  int i = -1, j, k = 0, state = 0;
  float num1, num2, ans;
  char temp[10];
  c_stack top;
  c_init_stack (&top);
  while (1)
    {
      switch (state)
    {
    case 0:
      i++;
      if ((mystring[i]) == ' ')
        {
          state = 0;
        }
      else if ((isdigit (mystring[i])) || (mystring[i] == '.'))
        {
          state = 1;
        }
      else if ((mystring[i]) == '\0')
        {
          state = 3;
        }
  else
    {
      state …
Run Code Online (Sandbox Code Playgroud)

c rpn calculator

-3
推荐指数
1
解决办法
413
查看次数