在Javaweb项目中用MVC模式进行后端管理员RSA加密登录前后端具体代码实现,要求使用MySQL数据库,利用layUI框架和ajax接口请求
时间: 2023-05-27 13:05:30 浏览: 51
后端代码实现:
1. 创建MVC模式中的Model层,即数据模型层。创建数据库表,用于存储管理员信息和加密密钥。
管理员信息表:
CREATE TABLE `admin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(20) NOT NULL,
`password` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
密钥表:
CREATE TABLE `rsa_key` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`public_key` varchar(500) DEFAULT NULL,
`private_key` varchar(500) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
2. 创建Controller层,即控制器层。处理后端请求和响应。
管理员登录接口:
@RequestMapping(value = "/admin/login", method = RequestMethod.POST)
@ResponseBody
public ResultBean adminLogin(@RequestBody Map<String, String> params) {
String username = params.get("username");
String password = params.get("password");
Admin admin = adminService.getAdminByUsername(username);
if (admin == null) {
return new ResultBean(ResultCode.USERNAME_ERROR);
}
// RSA解密密码
try {
password = RSAUtil.decrypt(password, rsaKeyService.getPrivateKey());
} catch (Exception e) {
return new ResultBean(ResultCode.PASSWORD_ERROR);
}
if (!password.equals(admin.getPassword())) {
return new ResultBean(ResultCode.PASSWORD_ERROR);
}
return new ResultBean(ResultCode.SUCCESS);
}
3. 创建Service层,即服务层。处理业务逻辑。
获取管理员信息:
public Admin getAdminByUsername(String username) {
return adminDao.getAdminByUsername(username);
}
获取RSA解密私钥:
public String getPrivateKey() {
RSAKey rsaKey = rsaKeyDao.getRSAKey();
return rsaKey.getPrivateKey();
}
4. 创建DAO层,即数据访问层。操作数据库。
获取管理员信息:
@Select("select * from admin where username = #{username}")
Admin getAdminByUsername(String username);
获取RSA密钥:
@Select("select * from rsa_key where id = 1")
RSAKey getRSAKey();
前端代码实现:
1. 使用LayUI框架创建登录页面,添加RSA加密功能。
<div class="layui-form-item">
<label class="layui-form-label">密码</label>
<div class="layui-input-inline">
<input type="password" name="password" lay-verify="required" placeholder="请输入密码" autocomplete="off" class="layui-input">
</div>
<button type="button" class="layui-btn layui-btn-normal" id="btn-rsa">RSA加密</button>
</div>
<script>
layui.use(['layer'], function () {
var layer = layui.layer;
// RSA加密
$('#btn-rsa').click(function () {
var password = $('input[name="password"]').val();
if (password === '') {
layer.msg('请输入密码');
return;
}
$.ajax({
url: '/rsa/encrypt',
type: 'POST',
data: {
password: password
},
dataType: 'json',
success: function (data) {
if (data.code === 0) {
$('input[name="password"]').val(data.data);
layer.msg('RSA加密成功');
} else {
layer.msg(data.msg);
}
}
});
});
});
</script>
2. 使用Ajax请求后端管理员登录接口。
<script>
layui.use(['layer'], function () {
var layer = layui.layer;
// 管理员登录
$('#btn-login').click(function () {
var username = $('input[name="username"]').val();
var password = $('input[name="password"]').val();
if (username === '') {
layer.msg('请输入用户名');
return;
}
if (password === '') {
layer.msg('请输入密码');
return;
}
$.ajax({
url: '/admin/login',
type: 'POST',
data: JSON.stringify({
username: username,
password: password
}),
contentType: 'application/json;charset=UTF-8',
dataType: 'json',
success: function (data) {
if (data.code === 0) {
layer.msg('登录成功');
// 跳转到首页
window.location.href = '/index';
} else {
layer.msg(data.msg);
}
}
});
});
});
</script>
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)