框架技术-Shiro介绍

shiro权限控制管理框架

一、 作用
  • 执行身份验证
  • 授权管理
  • 密码管理
  • 会话管理
二、主要功能
  • Subject
    当前操作对象;仅意味着跟软件当前的交互对象(并不仅指认)
  • SecurietyManger
    管理所有用户的安全操作;

    shiro通过这个组件管理内部组件实例对象,并通过该组件提供安全管理的各种服务
  • Realm
    是shiro与应用安全数据间的桥梁;是shiro需要从数据库中获取的对比数据的dao层
三、权限控制的两种方式
  • URL级别

    基于filter实现在数据库中存放用户、权限、访问URL的一一对应关系
  • 方法级别

    Spring管理:返回对象的代理对象,在访问真实对象每个方法时,查询数据库是否具有注解需要的权限
四、 登陆验证过程

登陆应用程序—> Subject—> SecurietyManger —> Realm —> 安全数据

  //获取当前登陆的用户
  	private static Subject getSubject(User user) {
  		//加载配置文件,并获取工厂
  		Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
  		//获取安全管理者实例
  		SecurityManager sm = factory.getInstance();
  		//将安全管理者放入全局对象
  		SecurityUtils.setSecurityManager(sm);
  		//全局对象通过安全管理者生成Subject对象
  		Subject subject = SecurityUtils.getSubject();

  		return subject;
  	}

    //是否拥有权限
	private static boolean isPermitted(User user,String permit) {
		Subject subject = getSubject(user);
		return subject.isPermitted(permit);
	}

  //判断是否登陆
	private static boolean login(User user) {
		Subject subject = getSubject(user);
		//如果已经登陆过,退出
		if(subject.isAuthenticated())
			subject.logout();
		//封装用户的数据
		UsernamePasswordToken token = new UsernamePasswordToken(user.getName(),user.getPassword());

		try{
			//将用户的数据token最终传到Ream中对比
			subject.login(token);
		}catch (AuthenticationException e) {
			//验证错误
			return false;
		}

		return subject.isAuthenticated();


	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值