之前添加了SS3作为作为系统的权限验证框架,但用户却是在SS的配置文件中直接配置所得,作为一个优秀的组件,当然是支持用户自定义用户的。
1、自定义表结构
create table T_SYS_USER--用户表
(
ID NUMBER not null primary key,
USERNAME VARCHAR2(50),
PASSWORD VARCHAR2(50),
FULLNAME VARCHAR2(100),
DEPARTMENT_ID NUMBER
);
create table T_SYS_ROLE--角色表
(
ID NUMBER not null primary key,
NAME VARCHAR2(20) not null,
DESCRIPTION VARCHAR2(100)
);
create table T_SYS_USER_ROLE--用户角色关联表
(
USER_ID NUMBER not null,
ROLE_ID NUMBER not null
);
add constraint PK_USER_ROLE primary key (USER_ID, ROLE_ID);
alter table T_SYS_USER_ROLE
add constraint FK_SYS_USER foreign key (USER_ID)
references t_sys_user (ID);
alter table T_SYS_USER_ROLE
add constraint FK_SYS_ROLE foreign key (ROLE_ID)
references t_sys_role (ID);
2、创建实体类User.java,对应于用户表,使其实现UserDetail类
@Entity
@Table(name="T_SYS_USER")
public class User implements Serializable, UserDetails {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_USER")
@SequenceGenerator(name="SEQ_USER", sequenceName="SEQ_USER")
private Long id;
private String username;
private String password;
private String fullname;
@Cascade(value={CascadeType.ALL})
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "T_SYS_USER_ROLE", joinColumns = { @JoinColumn(name = "USER_ID", referencedColumnName = "ID", nullable = false) }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID", referencedColumnName = "ID", nullable = false) })
private Set<Role> roles;
......(各种get,set方法)
@Override
public Collection<GrantedAuthority> getAuthorities() {
return new ArrayList<GrantedAuthority>(getRoles());
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}
创建实体类Role.java,对应于角色表,并使其实现GrantedAuthority 类
@Entity
@Table(name="T_SYS_ROLE")
public class Role implements Serializable, GrantedAuthority {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_ROLE")
@SequenceGenerator(name="SEQ_ROLE", sequenceName="SEQ_ROLE")
private Long id;
private String name;
private String description;
@Cascade(value={CascadeType.ALL})
@ManyToMany(mappedBy = "roles", fetch = FetchType.LAZY)
private Set<User> users;
......(各种get,set方法)
@Override
public String getAuthority() {
return getName();
}
}
3、UserServiceImpl类实现UserDetailsService类的loadUserByUsername方法
@Override
public UserDetails loadUserByUsername(String username)
throws UsernameNotFoundException, DataAccessException {
User user = userDao.loadUserByName(username);
if (user == null) {
log.warn("Login Error : user not found...");
throw new UsernameNotFoundException("Login Error : " + username + " not found!");
}
user.getAuthorities();
return user;
}
4、修改SS配置文件
<authentication-manager>
<authentication-provider user-service-ref="UserService">
</authentication-provider>
</authentication-manager>
这样,SS框架便会使用UserService类的loadUserByUsername方法来进行用户身份验证
5、插入数据到数据库进行测试
角色表应该至少要保证有ROLE_USER跟ROLE_ADMIN两个用户
分享到:
相关推荐
#micaicms-web-modules-archetypeMaven之自定义archetype生成多模块结构的基础项目骨架一:项目骨架介绍该项目骨架集成了Spring,SpringMVC,MyBatis,jsp,jquery,bootstrap等二:项目骨架使用介绍1.首先下载该...
这个框架是在学习Spring的时候,为了积累学习成果,自己搭建的,一般的系统开发也可以直接使用,包括一个系统开发的基础功能。 以下是当时自己开发时的日志,大致可以说明框架里已有功能 1.0.5 从web项目迁移成maven...
安装MySQL数据库–EMOS小程序安装MongoDB数据库–EMOS小程序安装Redis数据库–EMOS小程序配置Maven - EMOS小程序给IDEA安装插件–EMOS小...创建自定义异常类–EMOS小程序封装Web返回对象–EMOS小程序利用Swagger搭建R
- 整体系统采用门户网站+后台管理的方式搭建,门户主要展示博客内容,后台管理主要用于编辑文章,上传附件,控制黑名单登录等。 - 环境 工具 | 名称 | ------- | -------| 开发工具 | IDEA 语言 | JDK1.8, JS, ...
web项目设置在Servlet的context parameter中 事件Application Event 自定义事件,集成ApplicationEvent 定义事件监听器,实现ApplicationListener 使用容器发布事件 Spring高级话题 Spring Aware ...
0007--Java网络编程之socket.zip ├─0008--Maven.zip ├─0009--Web开发入门.zip ├─0010--深入理解Servlet.zip ├─0011--Session与Cokile实现原理.zip ├─0012--深入理解Http协议.zip ├─0013--Mybatis.zip ├...
《架构探险:从零开始写Java Web框架》首先从一个简单的 Web 应用开始,让读者学会如何使用 IDEA、Maven、Git 等开发工具搭建 Java Web 应用;接着通过一个简单的应用场景,为该 Web 应用添加若干业务功能,从需求...
>用spring boot开发的web博客系统,包括前端和后端源代码,还有sql文件。还有详细的搭建过程。 **** # 菜单 [一、配置Maven(如果已配置,可跳过)]...
JavaMelody 能够监测Java或...因为使用的是Maven搭建的Web工程,所以,本文给出的例子就是在已有的Maven工程上添加的。 通过两个步骤就可以将JavaMelody整合到已有的Maven工程中去。 pom.xml中添加JavaMelody依赖包
017Linux 用户和组管理 018查看目录和文件的权限 019更改操作权限 020安装 Java 021安装 Tomcat 022安装 MySQL 023部署项目 第3章 Docker实战开发 042设置镜像标签 024Docker 简介 025Docker 功能特点 026Docker ...
073 使用 MyBatis Maven Plugin 自动生成代码 074 集成 MyBatis-测试查询 第7章 项目实战 075项目简介 076 创建依赖管理项目 077 创建通用工具项目 078 创建数据库管理项目 079 创建领域模型项目 080 ...
├── zheng-ucenter -- 用户系统(包括第三方登录) | ├── zheng-ucenter-common -- ucenter系统公共模块 | ├── zheng-ucenter-dao -- 代码生成模块,无需开发 | ├── zheng-ucenter-rpc-api -- rpc接口包 |...
特别注意:本商品为 Springboot 工作流 前后分离+...项目是maven 项目,全部iar通过maven管理百台运行基于springboot内置web容器,通过运行启动类运行,前端在tomcat、nginx运行数据库:咱这边用的 mysql5.6 jdk 需要 1.8
该项目分了两个系统,一个用户登录的系统,一个管理员登录的系统,可以更好的进行管理 功能技术亮点:4,支付宝扫码支付 角色:商户 商品发码 1.商户通过自助签约平台签约扫码产品后,可以通过发码平台自助发商品...
各模块说明frameworkframework-archetype 自定义maven骨架,里面定义了一个业务服务分层framework-dependencies 统一管理第三方依赖版本framework-server 封装了web开发中常用组件,权限拦截、XSS拦截、缓存等...
1. 建立 maven 的 web 项目 2. 加入 Spring 框架、配置文件 3. 在 pom.xml 中加入所需要的 jar 包(spring 框架的、mybatis、mybatis-spring、junit 等) 4. 更改 web.xml 和 spring 的配置文件 5. 添加一个 jsp ...
涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。 第一部分 点睛Spring 4.x 第1 章 Spring ...
涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。 第一部分 点睛Spring 4.x 第1 章 Spring ...
涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。 第一部分 点睛Spring 4.x 第1 章 Spring ...
涵盖安装、配置、常见问题&技巧、Maven、Git、Tomcat、快捷键、项目配置等. 入门................................................................................................................................