Shiro权限管理

             Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

shiro : 认证 授权

步骤:

创建mavan项目 
导入shiro依赖 

<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.3.2</version>
</dependency>

<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.3.2</version>
</dependency>

<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.3.2</version>
</dependency>

导入到项目的pom.xml文件下

在src/mian/resources 建造一个文本

在这里插入图片描述

在shiro.ini 里面开始配置用户

#配置用户
[users]
admin=123,father
sa=222,son
[roles]
father=add,update,delete,select
son=add

在shiro-realm.ini 配置
myrealm=com.ch.shiro.MyRealm
securityManager.realm=$myrealm

在src/main/java目录下建一个shiro的类
在这里插入图片描述

 继承一个类 extends   AuthorizingRealm

实现里面的二个方法 一个是认证 一个是授权

public class MyRealm extends AuthorizingRealm{

//授权
@Override
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
	//用户名
	String username=(String) principals.getPrimaryPrincipal();
	System.out.println(username);
	//通过用户名查询到该用户对应的角色
	List<String> roles=new ArrayList<String>();
	roles.add("father");
	roles.add("son");
	
	//通过用户名查询角色,通过角色查询权限
	List<String> premissions=new ArrayList<String>();
	premissions.add("update");
	premissions.add("select");
	
	
	//授权信息
	SimpleAuthorizationInfo info=new SimpleAuthorizationInfo();
	//将角色赋予认证的用户
	info.addRoles(roles);
	//将权限信息返回
	info.addStringPermissions(premissions);
	
	return info;
}

//认证
@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
	UsernamePasswordToken usernamePasswordToken=(UsernamePasswordToken)token;
	//获取用户名和密码的方法
	String uname=usernamePasswordToken.getUsername();
	/*String pwd=new String(usernamePasswordToken.getPassword());
	System.out.println(uname+"\t"+pwd);*/
	
	
	//调用数据库查询的方法(通过用户名查询密码)
	String dbpwd="123";
	
	//认证
	SimpleAuthenticationInfo info=new SimpleAuthenticationInfo(uname, dbpwd, getName());
	
	return info;
}

}

这个文件里面要和你之前配置的用户名和权限一样

最后开始写测试

在src/test/java 下面建个test测试类 进行测试

public class TestShiro {
public static void main(String[] args) {
//使用shiro完成基础认证
//创建shiro的认证工厂
Factory factory=new IniSecurityManagerFactory(“classpath:shiro-realm.ini”);
//通过工厂得到安全管理者的对象
SecurityManager manager=factory.getInstance();
//将安全管理者添加到当前的安全管理环境中
SecurityUtils.setSecurityManager(manager);
//获取安全管理项目
Subject subject= SecurityUtils.getSubject();

	//创建保存用户名和密码的令牌
	UsernamePasswordToken token=new UsernamePasswordToken("admin", "123");
	
	
	//获取认证结果
	boolean f=false;
	try {
		subject.login(token);
		f=subject.isAuthenticated();
	} catch (Exception e) {
		
	}
	System.out.println(f);
	
	//是否具有某个角色
	boolean f1=subject.hasRole("father");
	System.out.println(f1);
	
	//是否具有某一些权限
	/*boolean f2=subject.isPermitted("update");
	System.out.println(f2);*/
	
	//是否具有多个权限
	boolean f2=subject.isPermittedAll("update","select");
	System.out.println(f2);
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值