feat: 客户端模式增加加密工具
This commit is contained in:
parent
0cf1d3cb60
commit
d1770d5326
|
@ -0,0 +1,50 @@
|
||||||
|
using Longbow.Security.Cryptography;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
|
namespace Bootstrap.Client.Controllers.Api
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 运维邮件发送接口
|
||||||
|
/// </summary>
|
||||||
|
[Route("api/[controller]/[action]")]
|
||||||
|
[ApiController]
|
||||||
|
public class EncrptyController : ControllerBase
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 生成加密盐值方法
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult Salt()
|
||||||
|
{
|
||||||
|
return new JsonResult(LgbCryptography.GenerateSalt());
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 根据提供的原始密码与盐值计算 Hash 值
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="data"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost]
|
||||||
|
public IActionResult Hash([FromBody]EncrptyPostData data)
|
||||||
|
{
|
||||||
|
return new JsonResult(LgbCryptography.ComputeHash(data.Password, data.Salt));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 加密数据提交类
|
||||||
|
/// </summary>
|
||||||
|
public class EncrptyPostData
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 获得/设置 加密盐值
|
||||||
|
/// </summary>
|
||||||
|
public string Salt { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获得/设置 要加密的原始密码
|
||||||
|
/// </summary>
|
||||||
|
public string Password { get; set; } = "";
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,14 +11,13 @@ namespace Bootstrap.Client
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tools 控制器
|
/// Tools 控制器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Authorize]
|
[Authorize(Roles = "Administrators")]
|
||||||
public class ToolsController : Controller
|
public class ToolsController : Controller
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// SQL 视图
|
/// SQL 视图
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[Authorize(Roles = "Administrators")]
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult SQL()
|
public IActionResult SQL()
|
||||||
{
|
{
|
||||||
|
@ -29,7 +28,6 @@ namespace Bootstrap.Client
|
||||||
/// SQL 视图
|
/// SQL 视图
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[Authorize(Roles = "Administrators")]
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult Mail()
|
public IActionResult Mail()
|
||||||
{
|
{
|
||||||
|
@ -100,5 +98,15 @@ namespace Bootstrap.Client
|
||||||
return db.Execute(sql);
|
return db.Execute(sql);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 加密工具控制器
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult Encrpty()
|
||||||
|
{
|
||||||
|
return View(new EncrptyModel(this));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
|
namespace Bootstrap.Client.Models
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Encrpty Model
|
||||||
|
/// </summary>
|
||||||
|
public class EncrptyModel : NavigatorBarModel
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 构造函数
|
||||||
|
/// </summary>
|
||||||
|
public EncrptyModel(ControllerBase controller) : base(controller)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
@model EncrptyModel
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "加密工具类";
|
||||||
|
}
|
||||||
|
@section javascript {
|
||||||
|
<script src="~/js/encrpty.js"></script>
|
||||||
|
}
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header">加密工具</div>
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="form-inline">
|
||||||
|
<div class="row">
|
||||||
|
<div class="form-group col-12">
|
||||||
|
<label class="control-label" for="password">原始密码:</label>
|
||||||
|
<input type="password" id="password" class="form-control flex-fill" autocomplete="off" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-12">
|
||||||
|
<label class="control-label" for="salt">密码盐:</label>
|
||||||
|
<div class="input-group flex-fill">
|
||||||
|
<input type="text" id="salt" class="form-control" autocomplete="off" />
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button type="button" data-method='salt' class="btn btn-secondary"><i class="fa fa-exclamation-triangle" aria-hidden="true"></i><span>生成</span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group col-12">
|
||||||
|
<label class="control-label" for="hash">Hash:</label>
|
||||||
|
<div class="input-group flex-fill">
|
||||||
|
<input type="text" readonly id="hash" class="form-control" autocomplete="off" />
|
||||||
|
<div class="input-group-append">
|
||||||
|
<button type="button" data-method="hash" class="btn btn-secondary"><i class="fa fa-exclamation-triangle" aria-hidden="true"></i><span>生成</span></button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
|
@ -0,0 +1,25 @@
|
||||||
|
$(function () {
|
||||||
|
$(document).on('click', '[data-method]', function (e) {
|
||||||
|
var method = $(this).attr('data-method');
|
||||||
|
switch (method) {
|
||||||
|
case 'salt':
|
||||||
|
$.bc({
|
||||||
|
url: 'api/Encrpty/Salt', method: 'get', callback: function (result) {
|
||||||
|
$('#salt').val(result);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case 'hash':
|
||||||
|
$.bc({
|
||||||
|
url: 'api/Encrpty/Hash', method: 'post', data: { password: $('#password').val(), salt: $('#salt').val() }, callback: function (result) {
|
||||||
|
$('#hash').val(result);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$.footer();
|
||||||
|
});
|
Loading…
Reference in New Issue