Shiro入门--构建JAVASE项目登陆总结

这篇文章主要是能够掌握Shiro的一些常用API和了解JAVASE环境Shiro的用户、角色、权限认证过程


首先创建一个Shiro JAVASE项目(创建时选择JAVA Project),创建好后目录结构如下:

log4j.properties、shiro.ini文件可以在官网(http://shiro.apache.org/download.html)下载,下载时选择ZIP文件,然后解压后在(D:\heyongjie\Desktop\shiro-root-1.3.2-source-release\shiro-root-1.3.2\samples\quickstart)目录下面,samples下面有很多shiro准备好的文件,quickstart是适合javase项目的环境!

jar包可以自己baidu下载,找不到可以留下联系方式!

下面我们看一下shiro.ini文件(不能直接打开,需要右键-->open With --> Text Editor,eclipse要这样,IDEA工具打开应该不会乱码)


很多都是注释掉的  

主要看 [users]  [roles]这二个 



API将在代码中进一步讲解,请看代码:


package com.shiro;


import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
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;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;



public class HelloShiro {
	private static final Logger log = LoggerFactory.getLogger(HelloShiro.class);

	public static void main(String [] atgs){
		
		// 1.获得安全管理器 
		Factory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
		SecurityManager securityManager = factory.getInstance();
		// 2.设置安全管理器 
		SecurityUtils.setSecurityManager(securityManager);
		// 获得Subject对象  即即将登陆的对象 
		Subject cerrentUser = SecurityUtils.getSubject();
		// 获得session对象 
		Session session = cerrentUser.getSession();
		session.setAttribute("name", "hyj");
		
		String value = (String) session.getAttribute("name");
		
		if(value != null){
			log.info(value);
		}
		// 判断是否登陆
		if(cerrentUser.isAuthenticated() == false){
			// 设置用户名和密码   必须是shiro.ini文件里面存在的  
			UsernamePasswordToken tocken = new UsernamePasswordToken("root", "secret");
			// 是否记住我 
			tocken.setRememberMe(true);
			// 登陆 
			try {
				cerrentUser.login(tocken);
				log.info("登陆成功 ");
			} catch (UnknownAccountException e) {
				log.info("用户名不存在 ");
			} catch (IncorrectCredentialsException e){
				log.info("密码错误 ");
			} catch (LockedAccountException e){
				log.info("用户已经锁死");
			}catch (AuthenticationException e){
				log.info("认证失败 ");
			}
		}
		// 判断该用户是否具有某种角色   ini里面有的  
		if(cerrentUser.hasRole("admin")){
			log.info("拥有指定的角色");
		}else{
			log.info("不拥有指定的角色");
		}
		
		// 判断该用户是否拥有制定的权限 
		if(cerrentUser.isPermitted("winnebago:drive:eagle5")){
			log.info("拥有指定的权限");
		}else{
			log.info("不拥有指定的权限");
		}
		
		// 退出登陆 
		cerrentUser.logout();
		
	} 
}

要看清楚引入的JAR包,不要引入错了!!

当然不懂的有视屏:直接腾讯课堂里面搜shiro,里面有详细的讲解!


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值