返回顶部
首页 > 资讯 > 后端开发 > Python >Spring Security3
  • 962
分享到

Spring Security3

Spring 2023-01-31 02:01:26 962人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

  项目用户权限备用,From:http://www.blogjava.net/SpartaYew/archive/2011/05/19/SpingSecurity3.html 使用Spring Security3的四种方法概述     

 

项目用户权限备用,From:http://www.blogjava.net/SpartaYew/archive/2011/05/19/SpingSecurity3.html

使用Spring Security3的四种方法概述

    那么在spring Security3的使用中,有4种方法:

    一种是全部利用配置文件,将用户、权限、资源(url)硬编码在xml文件中,已经实现过,并经过验证;

    二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置,目前这种方式已经实现,并经过验证。

    三种是细分角色和权限,并将用户、角色、权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor过滤器,
    并分别实现AccessDecisionManager、InvocationSecurityMetadataSourceService和UserDetailsService,并在配置文件中进行相应配置。
    目前这种方式已经实现,并经过验证。

    四是修改spring security的源代码,主要是修改InvocationSecurityMetadataSourceService和UserDetailsService两个类。
    前者是将配置文件或数据库中存储的资源(url)提取出来加工成为url和权限列表的Map供Security使用,后者提取用户名和权限组成一个完整的(UserDetails)User对象,该对象可以提供用户的详细信息供AuthentationManager进行认证与授权使用。
    该方法理论上可行,但是比较暴力,也没有时间实现,未验证,以后再研究。

    说明一下,我目前调通的环境为: java1.6 + struts2.1.6 + spring3.0.1 + hibernate3.3.1 + spring security3.0.2 + oracle9i + WEBlogic10.3,
    顺便提一下,目前(2011-4-2)serutity的最新版本为3.1,比较稳定的版本为3.0.5和2.0.6。

    当然在进行spring security3的下面4种方法介绍之前,先假定ssh2的环境已经配置完毕,进入正常开发的过程,并且已经导入
    spring security3.0.2的5个jar包,分别为:
    spring-security-acl-3.0.2.RELEASE.jar
    spring-security-config-3.0.2.RELEASE.jar
    spring-security-core-3.0.2.RELEASE.jar
    spring-security-taglibs-3.0.2.RELEASE.jar
    spring-security-web-3.0.2.RELEASE.jar
    当然还有其他相关的jar包,在此不再赘述。


第一种方法

    第一种方法比较简单,可参考Spring Security自带的例子spring-security-samples-tutorial-3.0.2.RELEASE。
这里给出下载网址:Http://www.springsource.com/download/commUnity?sid=1087087,不过在下载之前必须填写相应的用户信息,才允许下载。各种版本号的均可以下载。

    在spring-security-samples-tutorial-3.0.2.RELEASE的例子里,硬编码的配置请参见applicationContext-security.xml文件中的内容。
    里面配置了用户名、经过MD5加密后的密码密文、相关的权限,以及与权相对应的访问资源(URL)。还有对于Session超时时的处理。
    特别是因为版本号为3.0.2,因此还增加了对表达式的配置演示,具体内容请参见该例子。

    当然你最好运行起该例子来,感受一下,你可以直接将下载下来的解压缩后的文件夹中找到spring-security-samples-tutorial-3.0.2.RELEASE.war文件,然后拷贝到Tomcat的安装目录下的\webapps文件夹下,然后运行Tomcat的服务器,服务器在启动过程中,会自动解开该war文件,在IE内输入http://localhost:8080/webapps/spring-security-samples-tutorial-3.0.2.RELEASE 就可以运行该系统了。在此不再赘述。

第二种方法

    第二种方法的代码如下:

    使用到的两个表,用户表和权限表的sql语句。将用户和权限以数据库进行存储。

 

create table USERS(
  USERNAME   VARCHAR2(50) not null,
  PASSWord   VARCHAR2(50) not null,
  ENABLED    NUMBER(1) not null,
  USERNAMECN VARCHAR2(50),
  primary key( username )
)

create table AUTHORITIES(
  USERNAME  VARCHAR2(50) not null,
  AUTHORITY VARCHAR2(50) not null
)

-- 外键使用户和权限相联。

Create/Recreate primary, unique and foreign key constraints 
alter table AUTHORITIES
add constraint FK_AUTHORITIES_USERS foreign key (USERNAME)
references USERS (USERNAME);


可插入几条数据做为试验,首先插入用户:

insert into users (USERNAME, PASSWORD, ENABLED, USERNAMECN, ROWID)
values ('lxb', 'c7d3f4c857bc8c145d6e5d40c1bf23D9', 1, '登录用户', 'AAAHmhAALAAAAAOAAA');

insert into users (USERNAME, PASSWORD, ENABLED, USERNAMECN, ROWID)
values ('admin', 'ceb4f32325eda6142bd65215f4c0f371', 1, '系统管理员', 'AAAHmhAALAAAAAPAAA');

insert into users (USERNAME, PASSWORD, ENABLED, USERNAMECN, ROWID)
values ('user', '47a733d60998c719cf3526ae7d106d13', 1, '普通用户', 'AAAHmhAALAAAAAPAAB');

再插入角色:

insert into authorities (USERNAME, AUTHORITY, ROWID)
values ('admin', 'ROLE_PLATFORMADMIN', 'AAAHmjAALAAAAAgAAA');

insert into authorities (USERNAME, AUTHORITY, ROWID)
values ('admin', 'ROLE_SYSADMIN', 'AAAHmjAALAAAAAgAAB');

insert into authorities (USERNAME, AUTHORITY, ROWID)
values ('lxb', 'ROLE_LOGIN', 'AAAHmjAALAAAAAeAAA');

insert into authorities (USERNAME, AUTHORITY, ROWID)
values ('lxb', 'ROLE_LOGINTOWELCOME', 'AAAHmjAALAAAAAeAAB');

insert into authorities (USERNAME, AUTHORITY, ROWID)
values ('user', 'ROLE_USER', 'AAAHmjAALAAAAAgAAC');


第二种方法之密码加密

    可能要有人要问,用户表里面的密码是如何取得的呢?这个密码是通过MD5进行加密过的,并且以用户名做为了盐值,最后就成为32位数字这个样子,这个你可以参见下面applicationContext-Security.xml中的password-encoder和salt-source的配置就会明白。
    那么在spring security3中是如何加密的呢?当我们设置了pawwrod-encoder和salt-source之后,Spring Security3会根据配置,采用相匹配的加密算法(比如设置了MD5加密算法)再加上salt-source进行加密,形成32位数字的密文。
    比如用户名为yew,密码为yew1234,盐值为用户名yew。那么最后加密的明文为“yew1234{yew}”,密文就为“8fe2657d1599dba8e78a7a0bda8651bb”。

    我们在试验过程中,通常喜欢先将几个常用的用户及密码插入数据库进行试验,这种情况下如何得到该用户的密码密文呢?
    不妨试试我这个办法,假设,用户名为user,密码明文为user369,而且在配置文件里面设置了以MD5作为加密算法,并以用户名做为盐值。
    那么你可以首先将各个信息组合成待加密的密码明文, 应是 密码明文 + { + 盐值 + }, 那么很明显,上述user的密码明文应当是:

    user369{user}

    拿上述的字串拷贝到 http://www.51240.com/md5jiami/ 网页上的输入框里,点击加密按钮,下面即可生成32位数字的密码密文。

    哈哈,屡试不爽啊。这个方法要谨慎使用,一般人我不告诉他。


第二种方法之相关配置

    将权限及资源(URL或Action)的关系配置在xml文件中,并且配置与Spring Security3相关的其他配置:

 


   。。。。。

 

--结束END--

本文标题: Spring Security3

本文链接: https://lsjlt.com/news/185855.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Spring Security3
      项目用户权限备用,From:http://www.blogjava.net/SpartaYew/archive/2011/05/19/SpingSecurity3.html 使用Spring Security3的四种方法概述     ...
    99+
    2023-01-31
    Spring
  • spring security3 dem
    这两天在看spring security3的一些内容,走了一些路,也耗费了一些时间,在这里做一下记录,能给大家一些帮助是最好不过的了。 spring 官方网站下载地址:http://www.springsource.org/download...
    99+
    2023-01-31
    spring dem
  • spring security3 之 C
    Spring Security 和 CAS 交互流程web用户访问服务公共页面,没有涉及Spring Security和CAS用户访问一个受保护的页面或页面中使用了一个受保护的bean,Spring Security的ExceptionTr...
    99+
    2023-01-31
    spring
  • spring、spring MVC和spring Boot是什么
    这篇文章主要介绍“spring、spring MVC和spring Boot是什么”,在日常操作中,相信很多人在spring、spring MVC和spring Boot是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-06-05
  • Spring和Spring Boot区别
    spring和spring boot区别 二者主要区别是: Spring Boot提供极其快速和简化的操作,让 Spring 开发者快速上手。 Spring Boot提供了 Spring 运行的默认配置。 Spring Boot为通用 Sp...
    99+
    2023-09-05
    spring boot spring java 区别
  • Spring MVC 详解 (Spring Boot)
    Spring MVC 详解 - Spring Boot 一、什么是 Spring MVC1.1 MVC 定义1.2 MVC 和 Spring MVC 的关系1.3 学习目的 二、Spring MVC 创建和连接2.1 创建 Sp...
    99+
    2023-12-22
    spring mvc spring boot java 后端
  • Spring和Spring Boot的区别
    🏆今日学习目标: 🍀Spring和Spring Boot的区别 ✅创作者:林在闪闪发光 ⏰预计时间:30分钟 🎉个人主页:林在闪闪发光的个人主页  🍁林在闪闪发光的...
    99+
    2023-09-02
    spring boot spring java
  • Spring Boot与Spring MVC Spring对比及核心概念
    目录一、SpringBoot、SpringMVC、Spring对比Spring框架SpringMVCSpringBoot二、SpringBoot自动配置三、什么是SpringBoot...
    99+
    2024-04-02
  • Spring Boot、Spring Cloud与Spring Cloud Alibaba版本对应关系
    一、前言 在搭建SpringCloud项目环境架构的时候,经常需要选择SpringBoot和SpringCloud进行兼容的版本号。因此,对于选择SpringBoot版本与SpringCloud版本的...
    99+
    2023-10-09
    spring boot spring cloud java
  • 【Spring Boot】Spring—加载监听器
    这里写目录标题 前言加载监听器执行run方法加载配置文件封装Node调用构造器思考 前言 前几天的时候,项目里有一个需求,需要一个开关控制代码中是否执行一段逻辑,于是理所当然的在yml...
    99+
    2023-09-27
    spring boot spring java
  • Spring Cloud 关于:Spring Cloud Netflix Hystrix
      服务短路(CircuitBreaker)  QPS:Query Per Second  TPS:Transaction Per Second  QPS:经过全链路压测,计算单机极限QPS,集群QPS=单机PQS*集群机器数量*可靠性比率...
    99+
    2023-06-02
  • LocalContainerEntityManagerFactoryBean spring
    org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaMappingConte...
    99+
    2024-04-02
  • Spring JdbcTemplate.queryForList()
    在本文中,我们将学习使用JdbcTemplate.queryForList() 方法。queryForList()方法执行给定的 SQL 并返回结果List 对象。 queryForList()方法通过以下方式接受参数。1.  List...
    99+
    2023-10-10
    spring java sql
  • 【Spring Bean】
    1、介绍 当谈到Spring框架时,"bean"通常是指在Spring IoC容器中管理的对象,它是一个被实例化、组装和管理的Java对象。Spring框架通过IoC容器创建和管理这些bean,这意味...
    99+
    2023-09-01
    spring java servlet
  • Spring中Spring Boot与Spring MVC的核心概念是什么
    这篇文章主要介绍了Spring中Spring Boot与Spring MVC的核心概念是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Spring中Spring Boot与Sp...
    99+
    2023-06-29
  • Spring Boot Sample 024之spring-boot-data-influxdb
    一、环境 Idea 2020.1 JDK 1.8 maven 二、目的 spring boot 通过整合influxdb gitHub地址: https://github.com/ouyushan/ouyushan-spring-boo...
    99+
    2018-10-02
    Spring Boot Sample 024之spring-boot-data-influxdb 数据库入门 数据库基础教程 数据库 mysql
  • Spring之spring-context-indexer依赖详解
    目录Spring spring-context-indexer依赖配置springboot启动时自动打开浏览器 spring-context-indexer原理spring-cont...
    99+
    2024-04-02
  • Spring boot和Spring有什么不同
    这篇文章将为大家详细讲解有关Spring boot和Spring有什么不同,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Spring Boot 简介spring框架功能很强大,但是就算是一个...
    99+
    2023-05-31
    spring spring boot spring boo
  • 【Spring】Spring的Bean的生命周期
    作者简介:大家好,我是五度鱼,一个普通的Java领域博主,不停输出Java技术博客和干货。座右铭:锲而不舍,金石可镂。个人主页:五度鱼学Java的主页 文章目录 前言1. 什么是Bean的生命周期?2. 为什么要知道Bean...
    99+
    2023-08-17
    java Bean生命周期 spring
  • Spring Boot中怎么使用Spring MVC
    本篇内容主要讲解“Spring Boot中怎么使用Spring MVC”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring Boot中怎么使用Spring&n...
    99+
    2023-07-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作