`

maven搭建WEB项目6 - 添加系统自定义用户

ss3 
阅读更多
    之前添加了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-archetype:maven之自定义archetype生成多模块结构的项目骨架

    #micaicms-web-modules-archetypeMaven之自定义archetype生成多模块结构的基础项目骨架一:项目骨架介绍该项目骨架集成了Spring,SpringMVC,MyBatis,jsp,jquery,bootstrap等二:项目骨架使用介绍1.首先下载该...

    SpringMVC基础上的web框架

    这个框架是在学习Spring的时候,为了积累学习成果,自己搭建的,一般的系统开发也可以直接使用,包括一个系统开发的基础功能。 以下是当时自己开发时的日志,大致可以说明框架里已有功能 1.0.5 从web项目迁移成maven...

    SpringBoot 在线协同办公小程序开发 全栈式项目实战

    安装MySQL数据库–EMOS小程序安装MongoDB数据库–EMOS小程序安装Redis数据库–EMOS小程序配置Maven - EMOS小程序给IDEA安装插件–EMOS小...创建自定义异常类–EMOS小程序封装Web返回对象–EMOS小程序利用Swagger搭建R

    基于Jantent的博客系统学习springboot+源代码+文档说明

    - 整体系统采用门户网站+后台管理的方式搭建,门户主要展示博客内容,后台管理主要用于编辑文章,上传附件,控制黑名单登录等。 - 环境 工具 | 名称 | ------- | -------| 开发工具 | IDEA 语言 | JDK1.8, JS, ...

    springboot学习思维笔记.xmind

    web项目设置在Servlet的context parameter中 事件Application Event 自定义事件,集成ApplicationEvent 定义事件监听器,实现ApplicationListener 使用容器发布事件 Spring高级话题 Spring Aware ...

    蚂蚁课堂(每特学院)第一期-Java高端培训视频教程

    0007--Java网络编程之socket.zip ├─0008--Maven.zip ├─0009--Web开发入门.zip ├─0010--深入理解Servlet.zip ├─0011--Session与Cokile实现原理.zip ├─0012--深入理解Http协议.zip ├─0013--Mybatis.zip ├...

    架构探险-从零开始写javaweb框架

    《架构探险:从零开始写Java Web框架》首先从一个简单的 Web 应用开始,让读者学会如何使用 IDEA、Maven、Git 等开发工具搭建 Java Web 应用;接着通过一个简单的应用场景,为该 Web 应用添加若干业务功能,从需求...

    基于SpringBoot的包含前端和后端的博客系统源码+项目说明.zip

    &gt;用spring boot开发的web博客系统,包括前端和后端源代码,还有sql文件。还有详细的搭建过程。 **** # 菜单 [一、配置Maven(如果已配置,可跳过)]...

    JavaMelody能够监测Java或Java EE应用程序服务器.rar

    JavaMelody 能够监测Java或...因为使用的是Maven搭建的Web工程,所以,本文给出的例子就是在已有的Maven工程上添加的。 通过两个步骤就可以将JavaMelody整合到已有的Maven工程中去。 pom.xml中添加JavaMelody依赖包

    Java微服务架构l零从基础到精通高清视频教程全套 163课

    017Linux 用户和组管理 018查看目录和文件的权限 019更改操作权限 020安装 Java 021安装 Tomcat 022安装 MySQL 023部署项目 第3章 Docker实战开发 042设置镜像标签 024Docker 简介 025Docker 功能特点 026Docker ...

    Java微服务架构163课

    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接口包 |...

    OA办公系统 Springboot vue.js前后分离,Flowable工作流自定义表单

    特别注意:本商品为 Springboot 工作流 前后分离+...项目是maven 项目,全部iar通过maven管理百台运行基于springboot内置web容器,通过运行启动类运行,前端在tomcat、nginx运行数据库:咱这边用的 mysql5.6 jdk 需要 1.8

    GoodProject Maven Webapp.zip

    该项目分了两个系统,一个用户登录的系统,一个管理员登录的系统,可以更好的进行管理 功能技术亮点:4,支付宝扫码支付 角色:商户 商品发码 1.商户通过自助签约平台签约扫码产品后,可以通过发码平台自助发商品...

    framework:SpringBoot 整合常用框架,druid、mybatis、jpa、dubbo、redis、web等及使用示例,常用工具类等

    各模块说明frameworkframework-archetype 自定义maven骨架,里面定义了一个业务服务分层framework-dependencies 统一管理第三方依赖版本framework-server 封装了web开发中常用组件,权限拦截、XSS拦截、缓存等...

    MyBatis详解_与配置MyBatis

    1. 建立 maven 的 web 项目 2. 加入 Spring 框架、配置文件 3. 在 pom.xml 中加入所需要的 jar 包(spring 框架的、mybatis、mybatis-spring、junit 等) 4. 更改 web.xml 和 spring 的配置文件 5. 添加一个 jsp ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。 第一部分 点睛Spring 4.x 第1 章 Spring ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。 第一部分 点睛Spring 4.x 第1 章 Spring ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。 第一部分 点睛Spring 4.x 第1 章 Spring ...

    idea使用教程2017-06-01.pdf

    涵盖安装、配置、常见问题&技巧、Maven、Git、Tomcat、快捷键、项目配置等. 入门................................................................................................................................

Global site tag (gtag.js) - Google Analytics