0

我生成一个以字节为单位转换日期时间的令牌。这是我生成令牌的方式:

public string generateToken()
    {
        byte[] time = BitConverter.GetBytes(DateTime.UtcNow.ToBinary());
        byte[] key = new Guid().ToByteArray();
        string token = Convert.ToBase64String(time.Concat(key).ToArray());
        return token;
    }

这是生成令牌时的样子:

chas42Sbo9AAAAAAAAAAAAAAAAAAAAAAAA

但有时它也会生成特殊字符。就像在这个例子中:

chs2BiT/z0gAAAAAAAAAAAAAAAAAAAAA

我在链接中解析结果以重定向到另一个页面

http://test.com/abo.aspx?chas42Sbo9AAAAAAAAAAAAAAAAAAAAA

使用特殊字符,它看起来像这样:

http://test.com/abo.aspx?chs2BiT/z0gAAAAAAAAAAAAAAAAAAAAAAAA

这不起作用。

是否可以生成令牌但没有特殊字符?

4

1 回答 1

1

这是如何Base64定义的:

base-64位从0升序依次为大写字母“A”到“Z”,小写字母“a”到“z”,数字“0”到“9”,符号“+”和“/”。无值字符“=”用于尾随填充。

Convert.ToBase64String因此,如果您不希望/字符出现在令牌中,则不能使用。

于 2013-04-04T08:58:54.333 回答