欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

java web shiro_javase和javaweb环境下shiro的搭建

发布时间:2025/7/14 编程问答 69 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java web shiro_javase和javaweb环境下shiro的搭建 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

shiro-1

javase环境下搭建shiro

1.导入jar包

2.配置文件:存储临时文件

shiro.ini文件:存储数据,用户名,密码,角色,权限

3.代码

// 1.获取安全管理器

Factory factory = new IniSecurityManagerFactory("classpath:shiro.ini");

SecurityManager securityManager = factory.getInstance();

// 2.设置安全管理器

SecurityUtils.setSecurityManager(securityManager);

// 3.获取subject对象,即要登录的对象

Subject subject = SecurityUtils.getSubject();

spring与shiro集成

1.导入jar包

2.搭建好spring,springmvc

3.搭建shiro环境

1.web.xml

shiroFilter

org.springframework.web.filter.DelegatingFilterProxy

targetFilterLifecycle

true

shiroFilter

/*

2.在spring.xml中进行相关配置

shiro配置的核心:spring.xml欧中配置的一个bean

web.xml中DelegatingFilterProxy作用:入口,完成servlet容器到ioc容器的关联,到spring容器中找filter-name相同名字的bean实例

如果没有配置targetBeanName属性,则filter-name必须与bean的name相同

表单提交的数据封装到 usernamePasswordToken 数据库查询到的数据封装到SimpleAuthenticationInfo

加密:MD5, SHA1

1.存储数据时需要将用户输入的明文继续加密(Hibernate当中涉及md5加密) (Ream.java)

//将存入数据库的密码进行MD5加密

SimpleHash sh = new SimpleHash("md5", credentials, null, 2019);

2.前端用户输入的值,进行加密,string字符串经过md5加密(spring.xml)

class="org.apache.shiro.authc.credential.HashedCredentialsMatcher">

盐值加密:原有加密的基础上加密(两个相同密码在数据库存储的值还是不一样)

1.前端token当中获取的密码应该进行盐值加密

ByteSource salt = ByteSource.Util.bytes(principal);

new SimpleAuthenticationInfo(principal, sh, salt, realmName);

2.数据库中的值进行盐值加密

new SimpleHash("md5", credentials, salt, 2019);

多Realm获取数据:将一个密码存放在多个数据库中,建立多个Realm,并且每个realm使用不同的加密方式,在subject.login中会进行多个realm的调用,执行多次验证,提高数据安全性

1.第一种方法:

2.第二种方法:通过ModularRealmAuthenticator认证器

shiro认证策略:多个realm访问多个数据库,如何判断是否登录成功

1.FirstSucessfulStrategy 第一个realm认证成功就算成功

2.AtLeastOneSuccessfulStrategy 多个realm认证时,一个成功代表成功(默认)

3.AllSuccessfulStrategy 多个realm认证时,全部成功才代表成功

授权:控制哪一个用户可以访问哪一个web资源

1.编程式

if(subect.hasRole){

//有权限

}else{

//没有权限

}

2.注解式:通过在执行的java方法上注解

@RequireRoles("admin")

public void hello(){

//有权限

}

3.jsp/gsp标签

有权限

1.在FilterChainDefinitions中定义web资源对应角色

web资源=roles[角色名称]

/admin.jsp=roles[admin]

2.一个用户进行登录认证成功之后,之中还是要查找认证成功的角色拥有什么角色.realm可以和数据库交互,获取指定认证成功的用户对应的角色

1.我们可以自定义一个Realm,继承AuthorizingRealm,认证和授权

2.在ioc容器配置指定的Realm的bean实例(授权器)

3.告知securityManager使用哪一个授权管理器

参考视频:点击我

总结

以上是生活随笔为你收集整理的java web shiro_javase和javaweb环境下shiro的搭建的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。