shiro(四)自定义Realm来实现身份认证

1.jdbcRealm已经实现了从数据库中获取用户的验证信息,但是jdbcRealm灵活性太差。如果要实现自己的一些特殊应用时将不能支持。这个时候就可以通过自定义Realm来实现身份的认证功能。
2.Realm是一个接口,在接口中定义了根据token获得认证信息的方法。shiro内容实现了一系列的realm。这些不同的realm实现类提供了不同的功能。
AuthenticatingRealm实现了获取身份信息的功能,AuthorizingRealm实现了获取权限信息的功能。通常自定义Realm需要继承AuthorizingRealm,这样既可以提供身份认证的自定义方法也可以实现授权的自定义方法。
3.自定义Realm

package com.sxt.realm;

import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
/**
 * 自定义realm的实现,该realm类提供了两个方法
 * doGetAuthenticationInfo获取认证信息
 * doGetAuthorizationInfo获取权限信息
 * @author Lee
 *
 */
public class UserRealm extends AuthorizingRealm{
	//授权的信息
	@Override
	protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) {
		// TODO Auto-generated method stub
		return null;
	}
	//完成身份认证,并且返回认证信息
	//如果身份认证失败返回null
	@Override
	protected AuthenticationInfo doGetAuthenticationInfo(
			AuthenticationToken token) throws AuthenticationException {
		//获取用户输入的用户名
		String username = (String) token.getPrincipal();//获取身份信息
		System.out.println("username========="+username);
		//根据用户名到数据库查询密码信息-----模拟
		//假定从数据库中获取的密码为123
		String pwd = "123";
		//将从数据库查询的信息封装到SimpleAuthenticationInfo中
		SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(username,pwd,getName());
		return info;
	}

}

注意:使用shiro来完成权限管理,市容并不会去维护数据。shiro中使用的数据,需要程序员根据处理业务将数据传递给shiro相应的接口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统功能1、管理员管理:根据不同角色设置不同的管理权限;2、小区管理,管理多个小区资料,新增、修改、删除、摄像头管理等功能;3、小区摄像头管理:摄像头的新增、修改及删除功能;4、居民管理:居民资料新增,修改,删除,Excel批量导入,导出,居民人脸采集;5、访客登记:访客的新增,修改,删除,进入登记,离开登记,查询等功能;6、人脸识别:居民出入小区人脸识别功能的实现,使用腾讯AI人脸识别技术实现;7、出入记录:居民出入小区的人脸识别记录查询;8、小区地图:所有小区在地图的分布情况,使用百度地图实现;9、使用Echarts技术实现小区人员分类统计(柱状)图表;10、菜单管理:新增、修改、删除菜单功能(包括目录,菜单,按钮)11、角色管理:新增、修改、删除角色(系统角色、普通角色)12、系统日志:记录了系统中所有操作的日志,方便发现问题,查找原因;运行环境:  1、JDK1.8及以上版本  2、Tomcat 8.5及以上版本  3、MySql 5.7及以上版本  4、Redis开发工具:  1、前端开发工具:Visual Studio Code  2、后端开发工具:Intellij IDEA使用技术:  1、Vue2.x+ElementUI(前端)  2、Springboot+MyBatisPlus+Redis+Shiro+Swagger(后端)  3、人脸识别技术(腾讯AI)  4、MySql数据库技术  5、Redis缓存技术  6、百度地图  7、Echarts图表技术  8、POI Excel导入导出技术  9、Shiro权限控制:菜单管理,角色管理,权限管理(按钮及用户级别权限)  10、 Swagger接口配置管理,接口文档管理技术  11、Token单点技术(一个用户不能同时在多个设备登录使用)  12、前后端分离跨域设置等技术
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值