Shiro学习二:简单java项目使用shiro

1、创建简单的javaSE项目:

2、复制jar包:

3、Build Path:

4、shiro.ini:

5、java代码:

package day01;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.LockedAccountException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.config.IniSecurityManagerFactory;
import org.apache.shiro.mgt.SecurityManager;
import org.apache.shiro.session.Session;
import org.apache.shiro.subject.Subject;
import org.apache.shiro.util.Factory;

public class Demo {

	public static void main(String[] args) {
		Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
	    SecurityManager securityManager = factory.getInstance();
	    SecurityUtils.setSecurityManager(securityManager);
	    
	    Subject currentUser = SecurityUtils.getSubject();
	
	    Session session = currentUser.getSession();
	    session.setAttribute("someKey", "aValue");
	    String value = (String) session.getAttribute("someKey");
	    if (value.equals("aValue")) {
	        System.out.println("someKey 的值:" + value);
	    }
	
	    // 登陆
	    UsernamePasswordToken token = new UsernamePasswordToken("zhangsan", "zhangsan");
	    token.setRememberMe(true);
	    try {
	        System.out.println(token);
	        currentUser.login(token);
	    } catch (UnknownAccountException uae) {
	        System.out.println("用户名不存在:" + token.getPrincipal());
	    } catch (IncorrectCredentialsException ice) {
	        System.out.println("账户密码 " + token.getPrincipal()  + " 不正确!");
	    } catch (LockedAccountException lae) {
	        System.out.println("用户名 " + token.getPrincipal() + " 被锁定 !");
	    }
	
	    // 认证成功后
	    if (currentUser.isAuthenticated()) {
	        System.out.println("用户 " + currentUser.getPrincipal() + " 登陆成功!");
	        //测试角色
	        System.out.println("是否拥有 manager 角色:" + currentUser.hasRole("manager"));
	        //测试权限
	        System.out.println("是否拥有 user:create 权限" + currentUser.isPermitted("user:create"));
	        //退出
	        currentUser.logout();
	    }
	}

}

6、打印结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值