shiro

一,功能

1,提供认证服务,通过他可以完成身份认证,让他去判断用户是否为真实的用户;

2,提供授权服务,识别用户是否有权限访问该服务;

3,提供回话管理服务

二,实现

1,实现认证服务功能

读取classpath下的shiro。ini文件,并通过工厂类来创建securitymanager对象,将对象放入securityutil中,供shiro框架随时读取;

通过securityutil类获取subject对象,其实就是当前用户;

创建一个usernamepasswordtoken 对象,通过subject对象的login方法让shiro进行用户认证。此时,shiro创建了一个session。

三,shiro调用流程


通过subject调用securitymanager,通过securitymanager调用realm,realm就是提供用户信息的数据源。


四,使用shiro

1,配置web.xml

    <listener>
        <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
    </listener>

    <filter>
        <filter-name>ShiroFilter</filter-name>
        <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>ShiroFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>
通过environmentLoaderListener初始化securitymanager,并通过shirofilter认证和授权。

在shiro.ini中配置数据库信息

五,封装扩展shiro

1.配置smart-security.ini文件,实际是shiro。ini文件;

2,实现安全控制接口

提供一个名为smartSecurity的接口,需要实现三个方法:

根据用户名获取,密码在认证时调用,

根据用户名获取角色名集合,在授权时调用

根绝角色名获取操作名集合,在授权时需调用。

提供一个snartsecurity的实现类,完成相应的数据库操作


在smart.properties中配置

3,不配置web.xml

实现javax.servlet.servletContainerInitializer接口,并在classpath下的meta-inf/services/javax.servlet.servletContainerinitializer问见中添加实现ervletContainerinitializer的实现类,如:

该实现类如下:

public class SmartSecurityPlugin implements ServletContainerInitializer {

    public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException {

        //设置初始化参数
        ctx.setInitParameter("shiroConfigLocations","classPath:smart-security.ini");
        //注册listener
        ctx.addListener(EnvironmentLoaderListener.class);
        //注册filter
        FilterRegistration.Dynamic smartSecurityFilter = ctx.addFilter("SmartSecurityFilter",SmartSecurityFilter.class);
        smartSecurityFilter.addMappingForUrlPatterns(null,false,"/*");
    }
通过shiro提供的初始化参数来定制默认的shiro配置文件名,通过servletcontext注册listener和filter,这里注册的不是shirofilter,而是smartSecturityfilter,是filter的扩展。

4,实现认证特性

smartjdbcrealm:获取jdbc连接以及sql查询语句;

smartcustomrealm:

securityconfig:提供了一系列静态方法,用于获取smart。properties文件中的配置项。

securityConstatnt:常量类

5,实现securityhelper:提供登陆和注销方法,这些方法在controller中调用



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值