mirror of
https://e.coding.net/circlecloud/CTZLauncher.git
synced 2024-11-22 02:08:49 +00:00
添加外部登陆接口...
This commit is contained in:
parent
40549f65af
commit
6c220236ab
42
CTZLauncher/CTZAuth/CTZAuth.cs
Normal file
42
CTZLauncher/CTZAuth/CTZAuth.cs
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
19
CTZLauncher/CTZAuth/ICTZAuth.cs
Normal file
19
CTZLauncher/CTZAuth/ICTZAuth.cs
Normal 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);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -65,6 +65,8 @@
|
|||||||
<DependentUpon>App.xaml</DependentUpon>
|
<DependentUpon>App.xaml</DependentUpon>
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="CTZAuth\CTZAuth.cs" />
|
||||||
|
<Compile Include="CTZAuth\ICTZAuth.cs" />
|
||||||
<Compile Include="HttpHelper.cs" />
|
<Compile Include="HttpHelper.cs" />
|
||||||
<Compile Include="MainWindow.xaml.cs">
|
<Compile Include="MainWindow.xaml.cs">
|
||||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||||
|
@ -12,6 +12,7 @@ using System.Security.Cryptography.X509Certificates;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
using System.Windows.Threading;
|
||||||
|
|
||||||
namespace CityCraft
|
namespace CityCraft
|
||||||
{
|
{
|
||||||
@ -60,12 +61,33 @@ namespace CityCraft
|
|||||||
/// <param name="geturl">请求地址</param>
|
/// <param name="geturl">请求地址</param>
|
||||||
/// <param name="cookieser">Cookies存储器</param>
|
/// <param name="cookieser">Cookies存储器</param>
|
||||||
/// <returns>请求返回的Stream</returns>
|
/// <returns>请求返回的Stream</returns>
|
||||||
public void Send(HttpMethod method, string url)
|
public string Send(HttpMethod method, string url, bool Async = false)
|
||||||
{
|
{
|
||||||
readyState = HttpReadyState.载入;
|
readyState = HttpReadyState.载入;
|
||||||
ParseURL(url);
|
ParseURL(url);
|
||||||
args.Method = method;
|
args.Method = method;
|
||||||
new Thread(new ThreadStart(ReciveData)).Start();
|
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()
|
public void ReciveData()
|
||||||
|
@ -66,7 +66,7 @@
|
|||||||
</Grid>
|
</Grid>
|
||||||
<Grid Margin="30,20,30,30" Height="100" VerticalAlignment="Bottom">
|
<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="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>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
@ -160,7 +160,6 @@ namespace CTZLauncher
|
|||||||
|
|
||||||
private void maxmem_TextChanged(object sender, TextChangedEventArgs e)
|
private void maxmem_TextChanged(object sender, TextChangedEventArgs e)
|
||||||
{
|
{
|
||||||
|
|
||||||
//屏蔽中文输入和非法字符粘贴输入
|
//屏蔽中文输入和非法字符粘贴输入
|
||||||
TextBox textBox = sender as TextBox;
|
TextBox textBox = sender as TextBox;
|
||||||
TextChange[] change = new TextChange[e.Changes.Count];
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,12 +20,12 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// UUID不解释
|
/// UUID不解释
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Guid UUID { get; set; }
|
public Guid? UUID { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Session不解释
|
/// Session不解释
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Guid AccessToken { get; set; }
|
public Guid? AccessToken { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 各种属性(比如Twitch的Session)
|
/// 各种属性(比如Twitch的Session)
|
||||||
|
@ -1,70 +1,70 @@
|
|||||||
namespace KMCCC.Authentication
|
namespace KMCCC.Authentication
|
||||||
{
|
{
|
||||||
#region
|
#region
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 离线验证器
|
/// 离线验证器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class OfflineAuthenticator : IAuthenticator
|
public class OfflineAuthenticator : IAuthenticator
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 玩家的名字
|
/// 玩家的名字
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public readonly string DisplayName;
|
public readonly string DisplayName;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 构造离线验证器
|
/// 构造离线验证器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="displayName">玩家的名字</param>
|
/// <param name="displayName">玩家的名字</param>
|
||||||
public OfflineAuthenticator(string displayName)
|
public OfflineAuthenticator(string displayName)
|
||||||
{
|
{
|
||||||
DisplayName = displayName;
|
DisplayName = displayName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 标注离线验证器
|
/// 标注离线验证器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Type
|
public string Type
|
||||||
{
|
{
|
||||||
get { return "KMCCC.Offline"; }
|
get { return "KMCCC.Offline"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public AuthenticationInfo Do()
|
public AuthenticationInfo Do()
|
||||||
{
|
{
|
||||||
if (String.IsNullOrWhiteSpace(DisplayName))
|
if (String.IsNullOrWhiteSpace(DisplayName))
|
||||||
{
|
{
|
||||||
return new AuthenticationInfo
|
return new AuthenticationInfo
|
||||||
{
|
{
|
||||||
Error = "DisplayName不符合规范"
|
Error = "DisplayName不符合规范"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if (DisplayName.Count(char.IsWhiteSpace) > 0)
|
if (DisplayName.Count(char.IsWhiteSpace) > 0)
|
||||||
{
|
{
|
||||||
return new AuthenticationInfo
|
return new AuthenticationInfo
|
||||||
{
|
{
|
||||||
Error = "DisplayName不符合规范"
|
Error = "DisplayName不符合规范"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
return new AuthenticationInfo
|
return new AuthenticationInfo
|
||||||
{
|
{
|
||||||
AccessToken = Guid.NewGuid(),
|
AccessToken = null,
|
||||||
DisplayName = DisplayName,
|
DisplayName = DisplayName,
|
||||||
UUID = Guid.NewGuid(),
|
UUID = null,
|
||||||
Properties = "{}",
|
Properties = "{}",
|
||||||
UserType = "Mojang"
|
UserType = "Mojang"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task<AuthenticationInfo> DoAsync(CancellationToken token)
|
public Task<AuthenticationInfo> DoAsync(CancellationToken token)
|
||||||
{
|
{
|
||||||
return Task.Factory.StartNew((Func<AuthenticationInfo>)Do, token);
|
return Task.Factory.StartNew((Func<AuthenticationInfo>)Do, token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -19,8 +19,10 @@
|
|||||||
return dic.Aggregate(source, (current, pair) => current.Replace("${" + pair.Key + "}", pair.Value));
|
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("-", "");
|
return guid.ToString().Replace("-", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user