来自:my.oschina.net/liughDevelop/blog/1811524
一、背景
二、项目特性
自定义 @Log 注解自动记录日志到数据库。
自定义 @Pass 注解接口不用进行认证身份。
使用 JSONObject 统一获取 body 请求参数,减少实体类的数量。完成自定义 @ValidationParam 注解验证请求参数是否为空。
使用 bcrypt 算法加密密码,代码托管网站 Github 和美国军方防火墙同样采用此算法,靠 bcrypt 算法会成功保住密码强度不算很高的大部分账户。
搭配 Shiro 注解配置权限,高度灵活,提供按钮级别的权限控制,后端接口只验证权限,不看角色。用自定义 @CurrentUser 注解获取当前登录用户,Controlle 层统一异常处理:
用 SpringAOP 切面编程进行声明式事务,过滤请求参数,防止 XSS 攻击。
使用 POST 请求登录返回 token 和权限信息 (service 层增删改方法命名规范会自动加上事物),保证请求无状态,返回实体如果属性为空不显示。
三、程序逻辑
填写用户名密码用 POST 请求访问 / login 接口,返回 token 令牌等信息,失败则直接跳转 401 错误页面。 在之后需要验证身份的请求的 Headers 中添加 Authorization 和登录时返回的 token 令牌。 服务端进行 token 认证,失败跳转 401 页面。
用 JWT 做认证(登录),Shiro 做授权。
四、运行项目
通过 git 下载源码,本项目基于 JDK1.8 采用 Maven 项目管理,模块化,导入 IDE 时直接选定 liugh-parent 的 pom 导入 创建数据库 liugh,数据库编码为 UTF-8,执行 liugh.sql 文件,初始化数据 修改 application-dev.properties,更新 MySQL 账号和密码 Eclipse、IDEA 运行 SpringbootApplication.java,则可启动项目。或在 liugh-parent 目录下运行命令 mvn clean package,然后在 liugh-web/target 目录下运行 java -jar liugh-web.jar 命令 启动一个 redis 服务 访问登录接口:localhost:8081/api/login 账号密码:13888888888/123456 获取 token 访问其他接口 注意!!!!! 访问的接口 url 统一会加上 / api/v1; 编译器请安装 lombok 插件, 不然会报红