栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ssh整合shiro框架用于进行认证和授权

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ssh整合shiro框架用于进行认证和授权

基础介绍

shiro 是一个安全框架 有认证和授权 加密 会话管理等功能.
内置9个过滤器用于对数据进行过滤 (anon,authc,prem)
如何使用:步骤1:导入jar包(4个分别为shiro-web,spring,aspject,core)
步骤2:导入配置文件:application_shiro.xml(配置核心组件,安全管理器等)




   

  
	
		
		
		
		
		
		
		
		
		
		    
		
		
		
		
		
		
		
		
			
			
			
				/error.html = anon
				/login_*=anon
			
			    
			    /goodstype.html=perms["商品类型管理"]
			    /orders.html=perms["新增管理","审核管理","确认管理","入库管理","订单管理","销售订单新增","销售订单出库"]
			    /orders_add.action= perms["新增管理","销售订单新增"]
			    /orders_doCheck.action=perms["审核管理"]
			    /orders_doStart.action=perms["确认管理"]
			    
			    /orderdetail_doOutStore.action=perms["销售订单出库"]
			    /orderdetail_doInStore.action=perms["入库管理"]
			    /goodstype_*=perms["商品类型管理"]
			    
			    
			    
public class ErpRealm extends AuthorizingRealm{
//      注入empbiz 用于获取用户名和密码I
	private IEmpBiz empBiz;
	
	private IMenuBiz menuBiz;
	public void setMenuBiz(IMenuBiz menuBiz) {
		this.menuBiz = menuBiz;
	}

	public void setEmpBiz(IEmpBiz empBiz) {
		this.empBiz = empBiz;
	}

	
	@Override
	protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
		// TODO Auto-generated method stub
		System.out.println("授权方法");
//		在授权方法中对用户的权限 进行授权
//		步骤1:获得当前的用户信息
		Emp emp = (Emp) principals.getPrimaryPrincipal();
//		步骤2:获取菜单集合
		List list = menuBiz.getMenusByEmpuuid(emp.getUuid());
		//定义一个简易授权信息
		SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
		 for (Menu menu : list) {
//			 将菜单遍历加入到 对象中
             //赋值给简易授权信息
			info.addStringPermission(menu.getMenuname());
		}
		
//		将简易授权信息返回给//
		return info;
	}

	@Override
	protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
		// TODO Auto-generated method stub
		System.out.println("认证方法");
		
//		实现认证方法  通过访问 iempbiz 来判断是否密码是否正确
//		将携带的令牌 传给一个自定义的 用户密码令牌
		
		UsernamePasswordToken upt= (UsernamePasswordToken) token;
		String pwd = new String(upt.getPassword());
//		通过令牌中的用户名和密码调用 emp方法 查看用户是否存在
		Emp emp = empBiz.findByPasswordAndPassword(upt.getUsername(), pwd);
//		如果用户存在 则使用
		if (null!=emp) {
//              返回结果为:  简易授权信息 包括
//			      参数1:主角,就是登陆的用户
//			      参数2:证书凭证,或者密码
//			参数3:当前realm 的名称

			return new SimpleAuthenticationInfo(emp,pwd,getName());
		}
		
//		如果用户不存在就返回为空
		return null;
	}

}

重写之后将其配置到shiro中.见applicatioon-shiro图
之后可以通过
SecurityUtils.getSubject().getPrincipal();来得到用户名 用于页面返回.
可以调用subject 的logout来退出登录.

授权功能:
需要重写 对应的realm中的方法 
 配置核心配置文件中数据

分为三块 1:粗颗粒 2:细颗粒
1粗颗粒经常用于url 对网址进行授权 但是如果多个功能使用了同一个页面,就需要使用细颗粒 包括两种一:对方法的 2:对代码的. 需要进行对应的prem配置

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/750268.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号