java shiro认证问题如何解决?

Python017

java shiro认证问题如何解决?,第1张

如果是的话 就把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].

Possible unexpected error? (Typical or expected login exceptions should extend from AuthenticationException).

原因:

我今天也遇到了这个错误,并不是密码验证错误, 我用的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 是java 的一个安全权限框架。

Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境上,也可以用在JavaEE环境

Shiro 可以完成 :认证、授权、加密、会话管理、与Web集成、缓存等,

Subject :

应用代码直接交互的对象是Subject,也就是说Shiro的对外API核心就是Subject。Subject代表了当前“用户”,这个用户不一定是一个具体的人,与当前应用交互的任何东西都是Subject,如网络爬虫,机器人等;与Subject的所有交互都委托给SecurityManager;Subject其实是一个门面,SecurityManager才是实际的执行者;

SecurityManager :

安全管理器;即所有与安全有关的操作都会与SecurityManager交互;且其管理着所有的Subject;可以看出它是Shiro的核心,它负责Shiro的其他组件进行交互,他相当于SpringMVC中DispatcherServlet的角色

Realm :

Shiro从Realm获取安全数据(如用户、角色、权限),就是说SecurityManager要验证用户身份,那么它需要从Realm获取相应的用户进行比较以确定用户身份是否合法;也要从Realm获取相应的角色/权限进行验证用户是否能进行操作;可以吧Real看成DataSource