上一篇用以太坊区块链保证Asp.Net Core的API安全(上)我们介绍了基本的解决方案,这一篇我们重点来看客户端。
正如我们所说,我们的DApp是一个简单的HTML/ES6客户端。我们将在Asp.Net Core 2之上构建客户端,以利用IIS Express和Visual Studio IDE。因此,Startup.cs
类中的Configure
方法将是:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseDefaultFiles();
app.UseStaticFiles();
使DApp成为NPM
项目并安装必备条件以使用ES6 Javascript标准。这不是强制性的,可以使用自己的堆栈构建DApp。
从项目文件夹运行Powershell
并运行以下NPM
命令:
npm init
npm install webpack
npm install babel-core babel-loader --save-dev
npm install babel-preset-es2015 --save-dev
npm install babel-preset-stage-0 --save-dev
npm install babel-polyfill --save
npm install babel-runtime --save
npm install babel-plugin-transform-runtime --save-dev
要配置webpack/babel
,请使用以下配置创建webpack.config.js
文件:
var path = require("path");
module.exports = {
entry: [
"babel-polyfill",
"./src/main"
],
output: {
publicPath: "/js/",
path: path.join(__dirname, "/wwwroot/js/"),
filename: "main.build.js"
}
};
我们已设定webpack
将src/main.js
文件构建到/www/js/main.build.js
。
安装以太坊扩展包:
npm install web3
npm install ethereumjs-util
Web3是一个javascript
封装包,它简化了针对以太坊区块链的JSON RPC调用。Ethereumjs-util
提供了一些以太坊特定的实用程序。让我们构建一个非常简单的HTML页面。我们需要一个登录按钮和另一个按钮来从我们的API层加载一些安全数据:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Ethereum Jwt Client</title>
</head>
<body>
<h1>Ethereum Jwt Client</h1>
<div id="login-view">
<label>Your account: </label> <span id="eth_account_span"></span>
<button type="submit" id="login_btn">Login</button>
</div>
<div id="data-view">
<button type="submit" id="load_data_btn">Request secured data</button>
<ul id="data_list">
</ul>
</div>
<script src="js/main.build.js"></script>
</body>
</html>
DApp逻辑将驻留在src/main.js
文件中,正如我们在webpack.config.js
文件中指定的那样。src/main.js
文件将是:
let eth