shiro框架简介及用户认证实现

标签: shiro  ssh  框架  spring  apache

shiro也是apache的一个开源框架 官网:shiro.apache.org这里我分为了两篇来介绍,在实际项目中权限框架一直都是难点,shiro框架可以和spring整合使用,这样会相对容易上手,这一篇我们先入门,下一篇会介绍具体在项目中的使用方法。

shiro框架的核心功能:

认证授权会话管理加密;这里我们常用的就是前两种。

shiro框架认证流程:


Application Code:应用程序代码,由开发人员负责开发的

Subject:框架提供的接口,代表当前用户对象

SecurityManager:框架提供的接口,代表安全管理器对象

Realm:可以开发人员编写,框架也提供一些,类似于DAO,用于访问权限数据

在项目中应用shiro框架进行认证:

第一步:引入shiro框架相关的jar


第二步:在web.xml中配置spring框架提供的用于整合shiro框架的过滤器(如果配置了struts2的过滤器,一定要在它之前配置)。


第三步:在spring配置文件中配置bean,id为shiroFilter

参数:loginUrl:登陆页面,successUrl:登陆成功后跳转的页面,unauthorizedUrl:权限不足跳转的页面。

/**:所有请求都能匹配到,anon是对应过滤器类的简化名称,意思没有登陆也不拦截。perms:用来检查权限的,看用户是否有[]中的权限,后面会介绍具体使用

/* = authc:上面匹配不到,剩下的都要验证才能通过。


框架提供的过滤器:


第四步:配置安全管理器


这时候可以测试一下了:启动项目,到登陆页面,登陆后无法跳转其他页面,说明配置已成功,下面使用shiro提供的方式进行认证操作。

第五步:修改UserAction中的login方法,使用shiro提供的方式进行认证操作


第六步:自定义realm,并注入给安全管理器

public class BosRealm extends AuthorizingRealm{
	@Autowired
	private IUserDao userDao;
	
	//认证方法
	protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
		System.out.println("realm中的认证方法执行了。。。。");
		UsernamePasswordToken mytoken = (UsernamePasswordToken)token;
		String username = mytoken.getUsername();
		//根据用户名查询数据库中的密码
		User user = userDao.findUserByUserName(username);
		if(user == null){
			//用户名不存在
			return null;
		}
		//如果能查询到,再由框架比对数据库中查询到的密码和页面提交的密码是否一致
		AuthenticationInfo info = new SimpleAuthenticationInfo(user, user.getPassword(), this.getName());
		return info;
	}

	//授权方法
	protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
		// TODO Auto-generated method stub
		return null;
	}

添加spring配置:


这里用户认证就已经完成了。








版权声明:本文为a623982022原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a623982022/article/details/79191263