Springboot + Spring Security 实现前后端分离登录认证及权限控制
前言
关于Spring Security的概念部分本文不进行赘述,本文主要针对于对Spring Security以及Springboot有一定了解的小伙伴,帮助大家使用Springboot + Spring Security 实现一个前后端分离登录认证的过程。
文章会一步一步循序渐进的带大家敲一遍代码。最终的代码请看最后。
代码中我用到了插件lombok来生成实体的getter/setter,如果不想装插件请自己补全getter/setter
本文主要的功能
1、前后端分离用户登录认证
2、基于RBAC(角色)的权限控制
文章目录
1、准备工作
2、数据库表设计
3、Spring Security核心配置:WebSecurityConfig
4、用户登录认证逻辑:UserDetailsService
5、用户密码加密
6、屏蔽Spring Security默认重定向登录页面以实现前后端分离功能
7、实现登录成功/失败、登出处理逻辑
8、会话管理(登录过时、限制单用户或多用户登录等)
9、实现基于JDBC的动态权限控制
10、结束语
文章正文
一、准备工作
1、统一错误码枚举
/**
- @Author: Hutengfei
- @Description: 返回码定义
- 规定:
- #1表示成功
- #1001~1999 区间表示参数错误
- #2001~2999 区间表示用户错误
- #3001~3999 区间表示接口异常
- @Date Create in 2019/7/22 19:28
/ public enum ResultCode { / 成功 */
SUCCESS(200, “成功”), /* 默认失败 */
COMMON_FAIL(999, “失败”), /* 参数错误:1000~1999 */
PARAM_NOT_VALID(1001, “参数无效”),
PARAM_IS_BLANK(1002, “参数为空”),
PARAM_TYPE_ERROR(1003, “参数类型错误”),
PARAM_NOT_COMPLETE(1004, “参数缺失”), /* 用户错误 */
USER_NOT_LOGIN(2001, “用户未登录”),
USER_ACCOUNT_EXPIRED(2002, “账号已过期”),
USER_CREDENTIALS_ERROR(2003, “密码错误”),
USER_CREDENTIALS_EXPIRED(2004, “密码过期”),
USER_ACCOUNT_DISABLE(2005, “账号不可用”),
USER_ACCOUNT_LOCKED(2006, “账号被锁定”),
USER_ACCOUNT_NOT_EXIST(2007, “账号不存在”),
USER_ACCOUNT_ALREADY_EXIST(2008, “账号已存在”),
USER_ACCOUNT_USE_BY_OTHERS(2009, “账号下线”), /* 业务错误 */
NO_PERMISSION(3001, “没有权限”);
private Integer code;
private String message; ResultCode(Integer code, String message) {
this.code = code;
this.message = message;
} public Integer getCode() {
return code;
} public void setCode(Integer code) {
this.code = code;
} public String getMessage() {
return message;
} public void setMessage(String message) {
this.message = message;
} /**- 根据code获取message
* - @param code
- @return
*/
public static String getMessageByCode(Integer code) {
for (ResultCode ele : values()) {
if (ele.getCode().equals(code)) {
return ele.getMessage();
}
}
return null;
}
}
- 根据code获取message
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至22018681@qq.com 举报,一经查实,本站将立刻删除。