`

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两个用户
分享到:
评论

相关推荐

    SpringMVC精品资源--maven之自定义archtype生成自定义项目骨架 1.该项目是一个自定义的arch.zip

    在本资源中,我们将探讨如何通过Maven的自定义archetype功能来创建自定义项目骨架,以便快速搭建符合特定需求的SpringMVC项目。 首先,让我们理解什么是Maven Archetype。Archetype是Maven提供的一种模板机制,可以...

    springmvc +mybatis +maven 项目搭建demo

    以上就是关于"springmvc +mybatis +maven 项目搭建demo"的相关知识点,这个项目模板为初学者提供了学习和实践现代Java Web开发的基础框架,通过理解和修改这个示例,开发者能够更好地掌握这些技术的整合与使用。

    mavenWeb空项目

    在"mavenWeb空项目"中,开发者已经为这个Web应用搭建了基本的单元测试环境,这有助于确保代码的质量和稳定性,同时便于后续的功能添加和修改。 综上所述,"mavenWeb空项目"是一个包含Java Web开发基础的项目模板,...

    Maven本地仓库搭建工具nexus-2.11.4-01-bundle

    ** Maven本地仓库搭建工具Nexus简介 ** Maven是一个广泛使用的Java项目管理和综合工具,它通过依赖管理和项目构建生命周期管理简化了项目的构建、部署和管理。然而,随着项目的增多,依赖库也会变得庞大,直接从...

    使用Maven搭建SpringMVC项目代码(添加自己的代码可直接使用)

    本文将深入探讨如何使用Maven搭建一个基于Spring MVC的项目,并结合给定的文件列表,解释项目的结构和运行机制。 首先,Maven是一个流行的项目管理和依赖管理工具,它通过读取项目的`pom.xml`文件来管理项目构建、...

    JEECG-P3-Maven版本手把手入门-Eclipse

    - 配置环境变量:在Windows系统中,设置M2_HOME变量指向Maven安装目录,并在Path变量中添加Maven的bin目录。 - 测试安装:通过命令行运行mvn -version,确认安装的Maven版本为Apache Maven 3.1.1即为安装成功。 -...

    apache-maven-3.3.9-bin.zip

    Apache Maven 是一个强大的Java项目管理工具,它遵循约定优于配置的原则,使得构建过程标准化并简化了项目的生命周期管理。Maven通过使用一个项目对象模型(Project Object Model,POM)来描述项目,并自动处理构建...

    maven 项目搭建简单的springmvc登录

    总结,通过Maven,我们可以快速地搭建一个基于SpringMVC的Web应用,并利用其强大的依赖管理能力来简化项目构建。在实际开发中,我们还需要考虑安全性、性能优化以及错误处理等多个方面,但这个简单的登录例子为我们...

    maven私服nexus-2.11.4-01.rar

    然而,随着项目的发展,依赖库的数量会不断增多,这时,本地Maven仓库可能无法满足需求,这时就需要搭建一个私有的Maven仓库,即Maven私服。Nexus作为一款广泛应用的Maven私服,可以有效地解决这个问题。本文将详细...

    maven开发环境搭建

    ### Maven开发环境搭建详解 ...通过上述步骤,你可以成功地在Eclipse中搭建基于Maven的Java Web项目开发环境,并进行调试和服务配置。这不仅能够提高开发效率,还能够帮助开发者更好地管理项目的依赖关系。

    micaicms-web-modules-archetype:maven之自定义archetype生成多模块结构的项目骨架

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

    springmvc+maven搭建web项目

    SpringMVC+maven搭建Web项目 SpringMVC是一个基于Java的MVC框架,广泛应用于Web开发中,而Maven是一个项目管理工具,能够帮助开发者更方便地管理项目依赖关系和构建项目。SpringMVC+maven搭建Web项目是目前很多Java...

    maven 环境搭建

    ### Maven基础环境搭建详解 #### 一、Maven简介与作用 Maven 是一款非常流行的自动化构建工具,它主要用于 Java 项目的构建、依赖管理和项目信息管理。通过一系列生命周期和插件,Maven 能够自动完成项目的编译、...

    web27_maven基础-课堂笔记.md

    - **PATH**:添加 `%MAVEN_HOME%\\bin` 到系统路径中。 - **验证安装**:打开命令行窗口,输入 `mvn -version`,查看版本信息确认安装成功。 #### 二、相关概念 1. **仓库** - **定义**:用于存储 jar 包的库。...

    Maven搭建SpringMVC+Mybatis项目源码

    在本项目中,Maven负责依赖管理,确保所有所需的库(如Spring、Mybatis等)能够正确地被下载并添加到类路径中,简化了项目的构建过程。 2. SpringMVC: SpringMVC是Spring框架的一部分,用于处理Web请求。它采用...

    maven搭建java ee项目图文教程

    在本文中,我们将深入探讨如何使用Maven搭建Java EE项目,这是一个系统性的教程,适合初学者和有经验的开发者参考。Maven是一个强大的项目管理和综合工具,它可以帮助我们管理Java项目中的依赖,构建流程,以及生成...

    在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(二)发布自己开发的jar包

    在Linux环境下搭建自己的私有Maven仓库是许多开发者在企业级项目中常用的一种实践,这样可以方便地管理和分发自定义的jar依赖和maven插件。本篇将详细介绍如何在Linux系统上创建私有Maven仓库,并发布自定义的jar包...

Global site tag (gtag.js) - Google Analytics