添加外部登陆接口...

master
j502647092 2015-07-31 22:27:55 +08:00
parent 40549f65af
commit 6c220236ab
10 changed files with 387 additions and 291 deletions

View File

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Threading;
using CityCraft;
namespace CTZLauncher.CTZAuth
{
class CTZAuth : ICTZAuth
{
HttpHelper http = new HttpHelper();
string address;
string port;
public bool isRegister(string username)
{
return getResult(address + ":" + port + "/isregister?username=" + username);
}
public bool Register(string username, string password)
{
return false;
}
public bool isLogin(string username)
{
return getResult(address + ":" + port + "/islogin?username=" + username);
}
public bool Login(string username, string password)
{
return false;
}
public bool getResult(string url)
{
string result = http.Send(HttpMethod.GET, url);
if (result == "true")
return true;
return false;
}
}
}

View File

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CTZLauncher.CTZAuth
{
interface ICTZAuth
{
public abstract bool isRegister(string username);
public abstract bool Register(string username, string password);
public abstract bool isLogin(string username);
public abstract bool Login(string username, string password);
}
}

View File

@ -65,6 +65,8 @@
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="CTZAuth\CTZAuth.cs" />
<Compile Include="CTZAuth\ICTZAuth.cs" />
<Compile Include="HttpHelper.cs" />
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>

View File

@ -12,6 +12,7 @@ using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using System.Windows.Threading;
namespace CityCraft
{
@ -60,12 +61,33 @@ namespace CityCraft
/// <param name="geturl">请求地址</param>
/// <param name="cookieser">Cookies存储器</param>
/// <returns>请求返回的Stream</returns>
public void Send(HttpMethod method, string url)
public string Send(HttpMethod method, string url, bool Async = false)
{
readyState = HttpReadyState.;
ParseURL(url);
args.Method = method;
new Thread(new ThreadStart(ReciveData)).Start();
if (!Async)
{
while (readyState != HttpReadyState.) { this.DoEvent(); }
return responseBody;
}
return string.Empty;
}
/// <summary>
/// 模仿C#的Application.Doevent函数。可以适当添加try catch 模块
/// </summary>
public void DoEvent()
{
DispatcherFrame frame = new DispatcherFrame();
Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(ExitFrame), frame);
Dispatcher.PushFrame(frame);
}
public object ExitFrame(object f)
{
((DispatcherFrame)f).Continue = false;
return null;
}
public void ReciveData()

View File

@ -66,7 +66,7 @@
</Grid>
<Grid Margin="30,20,30,30" Height="100" VerticalAlignment="Bottom">
<Button Margin="12,24,167,35" Template="{StaticResource CornerButton}" Width="111" HorizontalAlignment="Center" Content="登录" Click="Login_Click" Background="Green" />
<Button Margin="167,24,12,35" Template="{StaticResource CornerButton}" Width="111" HorizontalAlignment="Center" Content="注册" Background="Green" />
<Button Name="register" Margin="167,24,12,35" Template="{StaticResource CornerButton}" Width="111" HorizontalAlignment="Center" Content="注册" Background="Green" Click="register_Click" />
</Grid>
</Grid>
</Grid>

View File

@ -160,7 +160,6 @@ namespace CTZLauncher
private void maxmem_TextChanged(object sender, TextChangedEventArgs e)
{
//屏蔽中文输入和非法字符粘贴输入
TextBox textBox = sender as TextBox;
TextChange[] change = new TextChange[e.Changes.Count];
@ -177,5 +176,15 @@ namespace CTZLauncher
}
}
}
private void register_Click(object sender, RoutedEventArgs e)
{
if (username.Text.Length == 0 || password.Text.Length == 0)
{
MessageBox.Show("请输入账号密码!");
return;
}
}
}
}

View File

@ -20,12 +20,12 @@
/// <summary>
/// UUID不解释
/// </summary>
public Guid UUID { get; set; }
public Guid? UUID { get; set; }
/// <summary>
/// Session不解释
/// </summary>
public Guid AccessToken { get; set; }
public Guid? AccessToken { get; set; }
/// <summary>
/// 各种属性比如Twitch的Session

View File

@ -1,70 +1,70 @@
namespace KMCCC.Authentication
{
#region
#region
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
#endregion
#endregion
/// <summary>
/// 离线验证器
/// </summary>
public class OfflineAuthenticator : IAuthenticator
{
/// <summary>
/// 玩家的名字
/// </summary>
public readonly string DisplayName;
/// <summary>
/// 离线验证器
/// </summary>
public class OfflineAuthenticator : IAuthenticator
{
/// <summary>
/// 玩家的名字
/// </summary>
public readonly string DisplayName;
/// <summary>
/// 构造离线验证器
/// </summary>
/// <param name="displayName">玩家的名字</param>
public OfflineAuthenticator(string displayName)
{
DisplayName = displayName;
}
/// <summary>
/// 构造离线验证器
/// </summary>
/// <param name="displayName">玩家的名字</param>
public OfflineAuthenticator(string displayName)
{
DisplayName = displayName;
}
/// <summary>
/// 标注离线验证器
/// </summary>
public string Type
{
get { return "KMCCC.Offline"; }
}
/// <summary>
/// 标注离线验证器
/// </summary>
public string Type
{
get { return "KMCCC.Offline"; }
}
public AuthenticationInfo Do()
{
if (String.IsNullOrWhiteSpace(DisplayName))
{
return new AuthenticationInfo
{
Error = "DisplayName不符合规范"
};
}
if (DisplayName.Count(char.IsWhiteSpace) > 0)
{
return new AuthenticationInfo
{
Error = "DisplayName不符合规范"
};
}
return new AuthenticationInfo
{
AccessToken = Guid.NewGuid(),
DisplayName = DisplayName,
UUID = Guid.NewGuid(),
Properties = "{}",
UserType = "Mojang"
};
}
public AuthenticationInfo Do()
{
if (String.IsNullOrWhiteSpace(DisplayName))
{
return new AuthenticationInfo
{
Error = "DisplayName不符合规范"
};
}
if (DisplayName.Count(char.IsWhiteSpace) > 0)
{
return new AuthenticationInfo
{
Error = "DisplayName不符合规范"
};
}
return new AuthenticationInfo
{
AccessToken = null,
DisplayName = DisplayName,
UUID = null,
Properties = "{}",
UserType = "Mojang"
};
}
public Task<AuthenticationInfo> DoAsync(CancellationToken token)
{
return Task.Factory.StartNew((Func<AuthenticationInfo>)Do, token);
}
}
public Task<AuthenticationInfo> DoAsync(CancellationToken token)
{
return Task.Factory.StartNew((Func<AuthenticationInfo>)Do, token);
}
}
}

View File

@ -19,8 +19,10 @@
return dic.Aggregate(source, (current, pair) => current.Replace("${" + pair.Key + "}", pair.Value));
}
public static string GoString(this Guid guid)
public static string GoString(this Guid? guid)
{
if (guid == null)
return "{}";
return guid.ToString().Replace("-", "");
}