18.03.09,web学习第七十天,bos第十天,shiro框架入门,18.03.09shiro


70. Bos第十天 权限认证

0. 英文翻译

1the 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. ShiroSpring配置模式

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>idshiroFilter的,所以,此处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;
}

 



查看评论

相关内容