shiro安全框架笔记
2016-12-23 09:25
148 查看
只是进行权限管理和登录认证的笔记,
直接入正题,shiro使用首先需要先将自己交给spring管理,并且需要在web.xml文件中配置过滤器
DelegatingFilterProxy是在org.springframework.web.filter下,说明该类是spring包下的类,通过继承GenericFilterBean类间接的实现了javax.servlet.Filter接口.servlet容器在启动时候,首先调用Filter的init方法.而targetFilterLifecycle的默认值是false,这个属性的作用是GenericFilterBean类留给子类扩展用的,false的话spring无法使用init()和destroy()方法。所以这个属性必须添加的时候手动更改为true;
该过滤器就是使用来历模式把容器中的filter与spring的bean关联起来;
交给spring管理之后,spring的xml文件中需要为之配置bean(万物皆bean);
注意的就是配置spring的时候需要代理方式改为动态代理的方法,不过这些通常不需要进行更改.属于固定配置,用户需要配置的是realm并将之交给安全管理器,使用权限管理器的时候将安全管理器引入即可,一般密码都是加密的密文.用户输入的明文在进行校验的时候需要转化成相应的密文,所以加密算法必不可少.需要将之配置到realm中,这样才能与数据库进行准确的交互
作为安全框架.当用户验证失败的时候必须要给返回一个指定的页面.所以需要配置一个过滤器,当用于验证失败的时候返回,一般是登录页面.同时过滤器同样需要将之交给安全管理器来管理
以上就是配置的内容.配置完成之后还需要手写realm的类(id=AuthRealm)的类
进行密码验证的时候.就是使用AuthenticationToken(令牌:大王叫我来巡山小钻风手中的代表身份的令牌),令牌中是用于登录时候输入的用户名和密码,返回的AuthenticationInfo就是验证之后的信息
内部通过AuthenticationToken进行传递,但是底层依旧是一个UsernamePasswordToken的对象。验证和加密措施分开写是为了代码的灵活性,当加密方法改变只需要专注加密的板块就好了,或者在配置文件中将加密的bean的class改变即可。提高代码复用和灵活性;
最后登录板块完成。(账号密码为空会在刚接受url中进行校验)如果登录失败会返回xml中指定的页面,登录成功shiro内部有sessionmanager。登录成功之后web容器中有存在相应的session,所以登录成功之后就拦截就接触了
最后进行权限验证
shiro对外访问就是通过subject来交互的,登录成功后才
9a85
会有用户的权限信息,通过从
得到用户只需要使用getPrincipal()就可,通过用户的id可以通过多表联查查询到用户的角色(职位)最终查询到用户的权限信息
权限信息就得到了,最后显示.使用shiro的标签通过验证就完成了
直接入正题,shiro使用首先需要先将自己交给spring管理,并且需要在web.xml文件中配置过滤器
DelegatingFilterProxy是在org.springframework.web.filter下,说明该类是spring包下的类,通过继承GenericFilterBean类间接的实现了javax.servlet.Filter接口.servlet容器在启动时候,首先调用Filter的init方法.而targetFilterLifecycle的默认值是false,这个属性的作用是GenericFilterBean类留给子类扩展用的,false的话spring无法使用init()和destroy()方法。所以这个属性必须添加的时候手动更改为true;
该过滤器就是使用来历模式把容器中的filter与spring的bean关联起来;
交给spring管理之后,spring的xml文件中需要为之配置bean(万物皆bean);
注意的就是配置spring的时候需要代理方式改为动态代理的方法,不过这些通常不需要进行更改.属于固定配置,用户需要配置的是realm并将之交给安全管理器,使用权限管理器的时候将安全管理器引入即可,一般密码都是加密的密文.用户输入的明文在进行校验的时候需要转化成相应的密文,所以加密算法必不可少.需要将之配置到realm中,这样才能与数据库进行准确的交互
作为安全框架.当用户验证失败的时候必须要给返回一个指定的页面.所以需要配置一个过滤器,当用于验证失败的时候返回,一般是登录页面.同时过滤器同样需要将之交给安全管理器来管理
以上就是配置的内容.配置完成之后还需要手写realm的类(id=AuthRealm)的类
进行密码验证的时候.就是使用AuthenticationToken(令牌:大王叫我来巡山小钻风手中的代表身份的令牌),令牌中是用于登录时候输入的用户名和密码,返回的AuthenticationInfo就是验证之后的信息
内部通过AuthenticationToken进行传递,但是底层依旧是一个UsernamePasswordToken的对象。验证和加密措施分开写是为了代码的灵活性,当加密方法改变只需要专注加密的板块就好了,或者在配置文件中将加密的bean的class改变即可。提高代码复用和灵活性;
最后登录板块完成。(账号密码为空会在刚接受url中进行校验)如果登录失败会返回xml中指定的页面,登录成功shiro内部有sessionmanager。登录成功之后web容器中有存在相应的session,所以登录成功之后就拦截就接触了
最后进行权限验证
shiro对外访问就是通过subject来交互的,登录成功后才
9a85
会有用户的权限信息,通过从
得到用户只需要使用getPrincipal()就可,通过用户的id可以通过多表联查查询到用户的角色(职位)最终查询到用户的权限信息
权限信息就得到了,最后显示.使用shiro的标签通过验证就完成了
相关文章推荐
- PTB递归神经网络阅读笔记
- Dll接口定义注意事项
- MySQL的jdbc驱动及连接字符串
- 使用基本 SQL 命令
- 关于码云中项目提交的问题
- 使用基本 SQL 命令
- 移动端-项目问题汇总
- Thread及ThreadGroup杂谈(1)
- mongo redis使用
- The Ubuntu Dialogue Corpus- A Large Dataset for Research in Unstructured Multi-Turn Dialogue Systems
- C#多线程扫描IP段和端口段.exe 小黄人软件定制
- Java编程——try-with-resources
- Docker创建镜像、怎么修改、上传镜像等详细介绍
- JS---如何避免用户在请求时“猛击”
- 使用TextRank算法为文本生成关键字和摘要
- vs2008 MFC使用DataGrid控件绑定数据库
- [置顶] java thread的stop,suspend,resume等方法废弃的原因
- SQL的四种连接-左外连接、右外连接、内连接、全连接
- 微信授权php获取用户基本信息
- 遇到的问题----新建maven项目ArtifactTransferException 和Execution default-testResources of goal或者导入maven报错