Fix for #291 : Reacting to addition of Base64UrlDecode and Base64UrlEncode in webUtilities.
This commit is contained in:
parent
79ad19f8bd
commit
eccefaffba
|
|
@ -3,9 +3,9 @@
|
|||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using Microsoft.AspNet.Mvc.Core;
|
||||
using Microsoft.AspNet.Security.DataProtection;
|
||||
using Microsoft.AspNet.WebUtilities;
|
||||
|
||||
namespace Microsoft.AspNet.Mvc
|
||||
{
|
||||
|
|
@ -24,7 +24,7 @@ namespace Microsoft.AspNet.Mvc
|
|||
Exception innerException = null;
|
||||
try
|
||||
{
|
||||
var tokenBytes = UrlTokenDecode(serializedToken);
|
||||
var tokenBytes = WebEncoders.Base64UrlDecode(serializedToken);
|
||||
using (var stream = new MemoryStream(_cryptoSystem.Unprotect(tokenBytes)))
|
||||
{
|
||||
using (var reader = new BinaryReader(stream))
|
||||
|
|
@ -127,65 +127,9 @@ namespace Microsoft.AspNet.Mvc
|
|||
}
|
||||
|
||||
writer.Flush();
|
||||
return UrlTokenEncode(_cryptoSystem.Protect(stream.ToArray()));
|
||||
return WebEncoders.Base64UrlEncode(_cryptoSystem.Protect(stream.ToArray()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private string UrlTokenEncode(byte[] input)
|
||||
{
|
||||
var base64String = Convert.ToBase64String(input);
|
||||
if (string.IsNullOrEmpty(base64String))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
var sb = new StringBuilder();
|
||||
for (var i = 0; i < base64String.Length; i++)
|
||||
{
|
||||
switch (base64String[i])
|
||||
{
|
||||
case '+':
|
||||
sb.Append('-');
|
||||
break;
|
||||
case '/':
|
||||
sb.Append('_');
|
||||
break;
|
||||
case '=':
|
||||
sb.Append('.');
|
||||
break;
|
||||
default:
|
||||
sb.Append(base64String[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
private byte[] UrlTokenDecode(string input)
|
||||
{
|
||||
var sb = new StringBuilder();
|
||||
for (var i = 0; i < input.Length; i++)
|
||||
{
|
||||
switch (input[i])
|
||||
{
|
||||
case '-':
|
||||
sb.Append('+');
|
||||
break;
|
||||
case '_':
|
||||
sb.Append('/');
|
||||
break;
|
||||
case '.':
|
||||
sb.Append('=');
|
||||
break;
|
||||
default:
|
||||
sb.Append(input[i]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return Convert.FromBase64String(sb.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue