spring security开发步骤
1.web.xml中加载spring ,spring security
2.spring security配置文件中配置好....
3.自己写一个myFilter代替原有的FilterSecurityInterceptor过滤器,并分别实现AccessDecisionManager、
InvocationSecurityMetadataSourceService和UserDetailsService.如下:
<beans:bean id="myFilter" class="org.springframework.security.web.access.intercept.FilterSecurityInterceptor">
<beans:property name="authenticationManager"
ref="authenticationManager" />
<beans:property name="accessDecisionManager"
ref="myAccessDecisionManager" />
<beans:property name="securityMetadataSource"
ref="securityMetadataSource" />
</beans:bean>
4.配置上面的3个bean,具体如下:
4.1 认证管理器 即:是否可以登录(包括是否锁定了,是否过期了等....)
<authentication-manager alias="authenticationManager">
<authentication-provider
user-service-ref="myUserDetailService">
<!-- 如果用户的密码采用加密的话
<password-encoder hash="md5" />
-->
</authentication-provider>
</authentication-manager>
4.2决策管理器 即:是否有权限访问资源
<beans:bean id="MyAccessDecisionManager"
class="org.springframework.security.access.vote.AffirmativeBased"
<beans:property name="decisionVoters">
<beans:list>
<beans:bean class="org.springframework.security.access.vote.RoleVoter">
<!-- 将授权名称的默认前缀由ROLE_改为空. -->
<beans:property name="rolePrefix" value=""></beans:property>
</beans:bean>
<beans:bean class="org.springframework.security.access.vote.AuthenticatedVoter"></beans:bean>
</beans:list>
</beans:property>
</beans:bean>
4.3 授权处理器 即定义某一资源可以被哪些用户组访问
<beans:bean id="securityMetadataSource"
class="com.aostarit.spring.security.MyInvocationSecurityMetadataSource" />
注意,4.3表示直接利用默认的授权处理器,它会从配置文件中读取group-->resource的对应关系,而非从数据库读取! 所以还需给告诉他初始化的时候用如下两个参数:
<b:constructor-arg type="org.springframework.security.web.util.UrlMatcher"
ref="myUrlPathMatcher" />
<!-- url对应authority的map -->
<b:constructor-arg type="java.util.LinkedHashMap"
ref="requestMap" />
既然如此,我们干脆自己写一个类得了,不用框架提供的类了.implements FilterInvocationSecurityMetadataSource 即可. 具体见资料.
4.1.1
真正干事的其实是这个myUserDetailService,他要实现UserDetailsService接口,
这个接口中的方法:public UserDetails loadUserByUsername(String username)真正干事,<!--再调用什么dao层我就不管了,呵呵-->
注意咯:返回的 UserDetails,我们返回一个实现了 UserDetails接口的类A即可.
注意咯:A还有两个特点,①.她里面的数据就是从数据库读出来的数据,比如username,password,她不管页面提交的password的. 究竟是怎么验证密码的,这个要找框架本身了.②.他的权限set的时候还有点小技巧,这个见我的项目的SecurityUser里的setAuthorities(List<Object[]> l)方法.
<beans:bean id="myUserDetailService" class="com.aostarit.spring.security.MyUserDetailService" >
<beans:property name="securityDao" ref="securityDao"></beans:property>
</beans:bean>
****securityDao,这个自己写咯......自己配咯.....
spring security开发步骤的更多相关文章
- Spring Security开发安全的REST服务
第1章 课程导学 项目介绍 Java实战:Spring Security开发安全的REST服务,来自慕客网的视频 ,主要讲认证和授权. 企业级的认证和授权 从0开始实现一个可重用的,企业级的,认证和授 ...
- Hibernate+Spring整合开发步骤
Hibernate是一款ORM关系映射框架+Spring是结合第三方插件的大杂烩,Hibernate+Spring整合开发效率大大提升. 整合开发步骤如下: 第一步:导入架包: 1.Hibernate ...
- spring程序开发步骤
1.使用spring框架之前的开发步骤 2.使用spring之后的开发步骤 3.文字描述 1.导入Spring开发的基本依赖 2.编写Dao接口和实现类 3.创建spring核心配置文件 4.在spr ...
- Spring Security开发Restful服务
2-1开发环境安装 1.jdk8安装 2.安装STS Spring Tool Suite实际上就是一个eclipse,只不过在此基础上又安装了一些插件 3.安装mysql 2-2代码结构介绍 打 ...
- 开发步骤Dubbo、spring mvc、springboot、SSM开发步骤
一.Dubbo开发步骤: 链接:https://pan.baidu.com/s/1pMPO1kf 密码:9zaa 第一: 1.创建consumer工程2.在pom.xml文件下添加配置3.添加appl ...
- 开发步骤Dubbo、spring mvc、springboot、SSM整合开发步骤
一.Dubbo开发步骤: 链接:https://pan.baidu.com/s/1pMPO1kf 密码:9zaa 第一: 1.创建consumer工程2.在pom.xml文件下添加配置3.添加appl ...
- Spring-boot & spring.security
spring.security提供了一种身份认证框架,开发者可以在这个框架中实现各种方式的用户身份管理,比如:LDAP.MYSQL.OAUTH.Mongo等等. spring.security认证步骤 ...
- OAuth 2 开发人员指南(Spring security oauth2)
https://github.com/spring-projects/spring-security-oauth/blob/master/docs/oauth2.md 入门 这是支持OAuth2.0的 ...
- Spring Security 解析(六) —— 基于JWT的单点登陆(SSO)开发及原理解析
Spring Security 解析(六) -- 基于JWT的单点登陆(SSO)开发及原理解析 在学习Spring Cloud 时,遇到了授权服务oauth 相关内容时,总是一知半解,因此决定先把 ...
随机推荐
- Clickonce - Change deployment URL after publish
mage.exe -Update C:\inetpub\wwwroot\aspnet40\AminoScience\Uploads\Application Files\AccUFeed_1_0_0_5 ...
- Ext.js二级联动
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <link href ...
- LaTeX新人教程,30分钟从完全陌生到基本入门[转载]
LaTeX新人教程,30分钟从完全陌生到基本入门[转载] 2017-02-05 分类:TeX讲义 阅读(32514) 评论(0) 这是一篇老文了,前几天看微博的时候看到的,文中的很多表达比较过激,思 ...
- Leetcode 476.数字的补数
数字的补数 给定一个正整数,输出它的补数.补数是对该数的二进制表示取反. 注意: 给定的整数保证在32位带符号整数的范围内. 你可以假定二进制数不包含前导零位. 示例 1: 输入: 5 输出: 2 解 ...
- [git 学习篇]远程创库
实际情况往往是这样,找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交. 完全 ...
- rsa Round #71 (Div. 2 only)
Replace A Time limit: 1000 msMemory limit: 256 MB You are given a string SS containing only letter ...
- iOS学习笔记29-系统服务(二)通讯录
一.通讯录 iOS中的通讯录是存储在数据库中的,由于iOS的权限设计,开发人员是不允许直接访问通讯录数据库的,实现通讯录操作需要使用到AddressBook.framework框架. AddressB ...
- POJ——2236Wireless Network(暴力并查集)
Wireless Network Time Limit: 10000MS Memory Limit: 65536K Total Submissions: 22107 Accepted: 928 ...
- VK Cup 2016 - Qualification Round 1——A. Voting for Photos(queue+map)
A. Voting for Photos time limit per test 1 second memory limit per test 256 megabytes input standard ...
- poj 1066 Treasure Hunt 线段相交
题目链接 题目描述 一个正方形房间被分成若干个小室,宝藏在其中某一点.现可炸开任意一堵墙壁的中点位置.问至少要炸开多少堵墙才能从外面到达宝藏所在地. 思路 (很巧妙,没想到) 直接枚举墙壁与正方形外壁 ...