apache shiro版本查看_Spring boot+Shiro的邮件收发系统-CR553

713a64e876dd79653b61c55fd1149ac2.png

一、简介

Github地址:https://github.com/CR553/MailBox

这是我们学校的一次计算机网络课程设计,要求如下:用户可以登录注册,基于SMTP协议发送邮件,基于POP3协议接收邮件。

使用技术及版本如下:Springboot 2.2.2,mybatis 2.1.2,shiro 1.5.3,javax.mail。

Maven依赖如下:

<dependencies>
        

配置文件如下:

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/MailUser?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
    driver-class-name: com.mysql.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: cr553.task3.pojo

效果图如下:

首页

20993c938689ad1297a62ee3c4636e1e.png

登录

03c3e9a609f2e5671936c21f886fa701.png

注册

903ff5f710758628855b338b37a2646d.png

发送邮件

2add4fcaa674aa9ff741a4e8ad737d4b.png

查看邮件

89fff92106644b1949ef9bda93e5b9e2.png

二、实现

权限管理实现

shiro的权限管理主要在这两个类中,自定义UserRealm和配置类中。实现权限配置的操作主要在getShiroFilterFactoryBean()方法中,将要配置的路径和权限保存在一个map中。authc表示只有登录才能够访问,setLoginUrl用来设置登录路径。

@Configuration

用户登录操作会转到自定义UserRealm中的认证中,此时用户账号和密码都在userToken中。认证阶段主要包括用户名认证和密码认证,将从前端获取的和数据库中查询的做个比较即可。

public 

登录功能实现

说注册登录之前先把实体类,dao,service层简单贴一下。

实体类,用了Lombok

@Data

Dao层

@Mapper

service层

@Service

登录和登出在controller中实现。这里将前端获取的用户名和密码封装到token中,传入上面说的userRealm中,第一个异常是抓用户名错误,第二个抓密码错误,统一表述为用户名或密码错误。登录核心方法:subject.login(token);登出核心方法:subject.logout() 。

//登录

注册功能实现

注册功能实现在controller层中,注册常规操作,检查前端输入的表单的规范性,全满足后存入数据库。

//注册

邮件发送实现

send方法为核心方法,先创建一个session域,设置好用户和密码,qq邮箱的服务器地址和端口之类的信息。在MimeMessage 中设置好内容,发件人,主题等信息,利用transport类依照smtp协议发送邮件。sendMail方法中主要是对前端表单进行一个校验,调用send()方法而已。

@Controller

邮件查看实现

getAllMails()是主要实现方法。和发送邮件相似,创建一个session,设置好服务器地址和端口,用户名密码等信息,利用store类获取folder类,在folder类中可以获取该用户所有邮件。receiveMail()方法中主要是调用了getAllMails()方法,和一系类解析邮件的的静态方法。将每个邮件的信息封装到自定义ReceiveMessage类中,为了前端thymeleaf渲染。

@Controller

页面

页面实现我就只说一下查看邮件页面和首页页面。

首页

<!DOCTYPE html>

css样式

*

顺便贴一下自己随手画的Logo:

641d176153ca371d3d8544818c7ad538.png

感觉还挺帅的Q.Q 我那两个该屎的室友审美真差劲!嘿嘿

查看邮件

receiveMail.html中用thymeleaf模板引擎获取从上面receiveMail()方法中传过来的mailList。用th:each遍历一下即可,这里我偷了个懒,使用了bootstarp table实现分页效果,具体如何实现可以百度。大概就是下好文件,引入一下,在js中配置一下第一行信息,分多少页之类的。

<!DOCTYPE html>

css样式参考一下吧

#

三、总结

这个程序较为适合新手入门吧,业务逻辑简单,两个SQL,两个核心功能,数据交互也不复杂,表单提交前端数据,thymeleaf提交后端数据。在网上关于这个的博客大多没有界面,或者说是技术栈太老套,因此做这个的目的一个是为了应付一下课程设计,一个是为了填补一下邮件收发系统在SSM中的空白,方便后者迭代更新。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值