×

shiro密码配置文件

shiro密码配置文件(shiro 默认密钥)

admin admin 发表于2023-04-01 03:40:10 浏览55 评论0

抢沙发发表评论

本文目录一览:

Shiro 用户名密码数据库校验怎么做的

可以使用shiro自带JdbcRealm,查一下API,在配置文件里配一下就是了;不过一般的应用都会实现自己的Realm,从AuthorizingRealm继承,实现非常简单。

java shiro认证问题如何解决?

如果是的话 就把spring-shiro.xml里 加密的部分去掉bean id="monitorRealm" class="com.test.util.MonitorRealm"property name="credentialsMatcher" bean class="org.apache.shiro.authc.credential.HashedCredentialsMatcher" property name="hashAlgorithmName" value="MD5"/ !-- true means hex encoded, false means base64 encoded -- property name="storedCredentialsHexEncoded" value="true"/ !-- 迭代次数 -- property name="hashIterations" value="2" / /bean /property/bean改成bean id="monitorRealm" class="com.test.util.MonitorRealm"/bean

for token submission

Authentication failed for token submission [org.apache.shiro.authc.UsernamePasswordToken - admin, rememberMe=false]. -shiro密码配置文件

Possible unexpected error? (Typical or expected login exceptions should extend from AuthenticationException).-shiro密码配置文件

原因:

我今天也遇到了这个错误,并不是密码验证错误, 我用的mabatis 有个mapperxml配置文件写错(并非登录相关的mapper),

参数类型是parametertype 我搞成了parametermap 报错就是这个错误。分析下在登录时login方法会调用我们重写的doGetAuthenticationInfo方法,

这个方法我们会通过dao实现层写的登录验证相关方法(我的是Admin admin = this.accountService.findAdmin(username))来将登录信息存入

SimpleAuthenticationInfo,就是在这个地方,项目会加载我们所配置的相关信息,对我而言就是mabatis里的xml 因为xml里的配置有错,

所以Admin admin = this.accountService.findAdmin(username)这个方法尽管与出错的xml无关也会报错。

所以说应该检查下自己与doGetAuthenticationInfo相关的配置文件是否有从,可以try{currentUser.login(token)}

catch(AuthenticationException a){}异常捕获后再次debug调试,就能发现问题出在哪里了。

Shiro实现登录功能的流程及配置

①login.html 发送AJAX异步请求到服务器,携带 username + password

②进入服务器,首先经过spring的编码过滤器,处理编码.

web.xml

③ 在服务器启动时,便创建了securityManager, 类似于dispatcherServlet 对进行登录的操作进行统一的管理.

Username + Password 生成Token,用于验证的准备

④ 创建自己的Realm,同时数据源交给spring容器管理

shiro.ini

告知shiro,配置数据源realm

⑤ 安全管理器从spring中取出数据源,进行验证.(先验证username ,再验证密码,验证成功则将用户存入缓存(session),以备验证使用)

后续页面发送请求携带sessionId,验证是否存在此用户.(下为源码)

⑥验证完成后,经过一系列的过滤器

这些过滤器配置在shiro.xml中.

在web.xml中配置shiro的过滤器代理DelegatingFilterProxy.在服务器启动时,到spring中寻找到这些过滤器的对象,形成调用链.

shiro的过滤器一般优先于服务器的过滤器执行.

⑦自建过滤器,返回AJAX信息

⑧经过一系列过滤器,页面接收返回信息

至此,shiro登录认证完成,用户信息存在于session中(此session被shiro封装).

在同一个会话中,页面的多次请求将通过携带SessionId,找到服务器的用户信息验证是否已登录.

下为源码

Shiro 的注销功能 也是获取session,清空session.

SpringBoot + Shiro (四)缓存&记住密码

最终demo

到这节为止,我们已经实现了身份验证和权限验证。但是,如果我们登录之后多次访问 的话,会发现权限验证会每次都执行一次。这是有问题的,因为像用户的权限这些我们提供给shiro一次就够了。

下面,我们开始给shiro添加缓存支持:

在 com.example.demo.config.Shiro.ShiroConfiguration 中添加以下方法。

将缓存对象注入到 SecurityManager 中:

在src/main/resouces/config中添加ehcache-shiro.xml配置文件:

启动项目,再多次访问 ,这时候只会在后台打印一次配置权限的信息了,说明shiro缓存起了作用。

---------------------下面我们开始配置记住密码-----------

将rememberMeManager注入到SecurityManager中

在 ShiroFilterFactoryBean 中添加记住我过滤器 user ,添加 user 过滤器的资源在记住我或认证之后就可以直接访问了。

最后,在login.html页面添加记住我单选框

启动项目,正常登录后关闭浏览器,再打开浏览器输入 ,这时候就可以直接访问index页面,不需要再登录了。

SpringBoot + Shiro (一)基础工程搭建

SpringBoot + Shiro (二)身份校验和角色设置

SpringBoot + Shiro (三)权限

SpringBoot + Shiro (四)缓存记住密码

SpringBoot + Shiro (五)验证码

最后,感谢几位作者的文章解惑:

springboot整合shiro-登录认证和权限管理

Spring Boot Shiro权限管理【从零开始学Spring Boot】

Spring boot 中使用Shiro

最后帮朋友打个小广告

一个有趣的迷你小程序

在dispatcherservlet的配置文件中配置shiro为什么不起作用

说具体一点,请。

推荐一套完整的Shiro Demo,免费的。

Shiro介绍文档:

Demo已经部署到线上,地址是

管理员帐号:admin,密码:sojson.com 如果密码错误,请用sojson。PS:你可以注册自己的帐号,然后用管理员赋权限给你自己的帐号,但是,每20分钟会把数据初始化一次。建议自己下载源码,让Demo跑起来,然后跑的更快。-shiro密码配置文件

使用Shiro加密与解密实现简单用户注册与登录验证

编码与解码

Shiro 提供了 base64 和 16 进制字符串编码、解码的API 支持,方便一些编码解码操作。Shiro 内部的一些数据的存储、表示都使用了base64 和 16 进制字符串。

1、base64 编码与解码

String str = "admin";

String base64Encoded = Base64. encodeToString (str.getBytes());

String str2 = Base64. decodeToString (base64Encoded);

logger .info(str+"==="+base64Encoded+"=="+str2);

2、16 进制字符串编码与解码

String str3 = "test";

String hexEncoded2 = Hex. encodeToString (str3.getBytes());

String str4 = new  String(Hex. decode (hexEncoded2.getBytes()));

logger .info(str3+"==="+hexEncoded2+"=="+str4);

散列算法加密

散列算法一般用于生成数据的重要信息,是一种不可逆的算法,适合存储密码之类的数据,常见的散列算法如MD5、SHA 等。

[if !supportLists]1、[endif]MD5算法盐值加密

String pswd= "123456";

String salt = "123";

String md5 = new  Md5Hash(pswd, salt).toString();

另外散列时还可以指定散列次数,new Md5Hash(pswd, salt, 2).toString(),数字2代表加密次数。

[if !supportLists]2、[endif]SHA256 算法盐值加密

String pswd= "123456";

String salt = "123";

String sha = new  Sha256Hash(pswd, salt).toString();

[if !supportLists]3、[endif]SHA1算法盐值加密

String pswd= "123456";

String salt = "123";

String sha = new  Sha1Hash(pswd, salt).toString();

4、SHA512算法盐值加密

String pswd = "123456";

String salt = "123";

String sha = new  Sha512Hash(pswd, salt).toString();

[if !supportLists]5、[endif]Shiro 还提供了通用的散列SimpleHash

String pswd = "123456";

String salt = "123";

//内部使用MessageDigest

String simpleHash=

new   SimpleHash("SHA-1",pswd,salt,4).toString();

Shiro 还提供对称式加密、解密算法的支持

[if !supportLists]1、[endif]AES 算法

//生成key

Key key = aesCipherService.generateNewKey();

String pswd = "123456";

//加密

String encrptText = aesCipherService.encrypt(pswd.getBytes(), key.getEncoded()).toHex();

//解密

String text2 =

new  String(aesCipherService.decrypt(Hex. decode (encrptText), key.getEncoded()).getBytes());

logger .info(pswd+"==="+encrptText+"=="+text2);

简单模拟用户注册

1、首先使用SHA256算法加密密码明文,UserService层实现。

UserDaoImpl userDaoimpl ;

public   static   void  main(String[] args) {

String email ="123@qq.com";

String password = "123";

String sha = new  Sha256Hash(password, ByteSource.Util. bytes (email)).toString();//使用邮箱作为盐值

User user = new  User(4L,"管理员",email,sha, new  Date(), new  Date(),1);

UserService userService = new  UserService();

userService.insert(user);

}

public    int  insert(User user){

userDaoimpl = new  UserDaoImpl();

return  userDaoimpl.insert(user);

}

2、Dao插入数据

@Override

public   int  insert(User record) {

String sql = "insert into u_user(id,nickname,email,pswd,create_time,last_login_time,status) values (?,?,?,?,?,?,?)";-shiro密码配置文件

return   insert(sql,record.getId(),record.getNickname(),record.getEmail(),record.getPswd(),record.getCreateTime(),record.getLastLoginTime(),record.getStatus());-shiro密码配置文件

}

HashedCredentialsMatcher 实现密码验证服务

1、自定义JdbcRealm实现AuthorizingRealm接口,重写doGetAuthenticationInfo(,,,)方法。

[if !supportLists]2、[endif]配置ini文件内容

主要配置HashedCredentialsMatcher实现密码验证服务。

credentialsMatcher=org.apache.shiro.authc.credential.HashedCredentialsMatcher

credentialsMatcher.hashAlgorithmName=SHA-256#加密算法

credentialsMatcher.hashIterations=1#迭代次数

credentialsMatcher.storedCredentialsHexEncoded=true

jdbcRealm=com.shiro.test.JdbcRealm

jdbcRealm.credentialsMatcher=$credentialsMatcher

securityManager.realms=$jdbcRealm

3、]用邮箱、密码实现登录认证

4、结果