18.03.09,web学习第七十天,bos第十天,shiro框架入门,18.03.09shiro
18.03.09,web学习第七十天,bos第十天,shiro框架入门,18.03.09shiro
70. Bos第十天 权限认证
0. 英文翻译
1)the trial period has expired 试用期已过 |
1. 配置一个监听器,在程序启动时就操作数据库
1)继承ServletContextListener
|
2. 常见的权限控制方法
1)基于拦截器或者过滤器
2)方法注解权限控制,基于代理技术实现。为action创建代理对象, 由代理对象进行权限校验。 例如注解事务,是spring创建了被注解action代理对象。 |
3. 角色跟权限的关系:角色是权限的集合
4. Shiro框架核心功能
1)认证,授权,会话管理,加密 2)单点登录 3)框架认证流程
applicationCode:应用程序代码,开发人员开发 Subject:框架提供接口:当前用户对象 SecurityManager:框架提供接口,代表安全管理器对象,最重要,内部有众多对象。 Realm:框架和开发人员都可以编写,类似于dao,用于访问权限数据。 |
5. Shiro与Spring配置模式
1)相关包
2)只需要导入shiro-all-1.2.2.jar,相当于其它全部导入了 3)与Spring整合方式,一般都整合使用 在maven项目中导入shiro依赖 4)在web.xml中配置一个过滤器,spring提供,用于整合shiro框架。 一定要放在struts的过滤器之前。 <filter> <filter-name>abc</filter-name> <filter-class>.....DelegatingFilterProxy</filter-class> </filter> <filter-mapping> <filter-name>abc</filter-name> <url-pattern>/*</url-pattern> <filter-mapping> 注意:在项目启动时,会到spring中寻找<bean>的id是shiroFilter的,所以,此处abc必须写成shiroFilter。 然后在spring工厂中配置shiro的过滤器工厂对象与上述id一致。
5) <value> /**=authc </value> 这个过滤器是用来检查是否登录了 可以配置以下匿名anon:匿名访问过滤器:不登陆也能访问。
配置安全管理器
6)以上配置完毕后,需要使用shiro框架的方法来给我们认证是否 登录。 以下是shiro框架完整认证流程: 修改UserAction中的login方法,使用shiro提供的方式进行认证操作
自定义realm,并注入给安全管理器 public class BOSRealm extends AuthorizingRealm{ @Autowired private IUserDao userDao; //认证方法 protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { System.out.println("realm中的认证方法执行了。。。。"); UsernamePasswordToken mytoken = (UsernamePasswordToken)token; String username = mytoken.getUsername(); //根据用户名查询数据库中的密码 User user = userDao.findUserByUserName(username); if(user == null){ //用户名不存在 return null; } //如果能查询到,再由框架比对数据库中查询到的密码和页面提交的密码是否一致 AuthenticationInfo info = new SimpleAuthenticationInfo(user, user.getPassword(), this.getName()); return info; } //授权方法 protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { // TODO Auto-generated method stub return null; }
|
查看评论
评论暂时关闭