今天给大家分享Reaml自定义具体操作流程
1.1 导入依赖的包
导入shiro需要的依赖包
<shiro-version>1.2.5</shiro-version>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>${shiro-version}</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>${shiro-version}</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>${shiro-version}</version>
</dependency>
1.2 web.xml配置
配置shiroFilter监听器
<!-- shiro -->
<filter>
<filter-name>shiroFilter</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>shiroFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
1.3自定义Reaml实现流程
如果需要开发自定义Reaml,可以继承AuthorizingReaml实现doGetAuthorizationInfo方法与doGetAuthenticationInfo方法
自定义Realm做为组件放入spring容器, 然后将组件放入securityManager安全管理器,安全管理器最后将权限控制给shiro容器监听器。
shiro容器监听器,找到安全管理器,安全管理器找自定义Reaml,自定义Reaml继承AuthorizingRealm调用方法获取用户信息
自定义UserReaml类:
1.4用户登陆
效果展示
获取subject管理员权限,然后调用登陆方法,找到自定义Reaml类UserReaml上的方法,判断账号密码是否与数据库配对,如果配对,就跳转登陆页面。不配对直接阻止。
UserReaml类
通过令牌Token,获取并保存登陆名,执行登陆Service方法,调用认证登陆操作处理结果给令牌Token
锁定用户
User实体定义一个锁定用户号