项目场景:
相关背景:
使用idea 开发java 项目,前端页面请求 页面中相关的接口时,idea 控制台有报错信息出现,前端请求失败。
问题描述
问题:
使用idea 开发java 项目,前端页面请求 页面中相关的接口时,idea 控制台有报错信息出现,前端请求失败。报错信息如下所示:
code: 500 ] This subject is anonymous - it does not have any identifying principals and authorization operations require an identity to check against. A Subject instance will acquire these identifying principals automatically after a successful login is performed be executing org.apache.shiro.subject.Subject.login(AuthenticationToken) or when 'Remember Me' functionality is enabled by the SecurityManager. This exception can also occur when a previously logged-in Subject has logged out which makes it anonymous again. Because an identity is currently not known due to any of these conditions, authorization is denied.: http://localhost:8090/act/model/list
原因分析:
分析问题:
这个错误是由于在使用 Apache Shiro 安全框架时,当前主体(Subject)未经过身份验证而执行了授权操作,导致没有任何可用的身份信息进行检查。
解决方案:
解决方案:
1、首先需要确认当前主体是否已经经过身份验证。
2、如果当前主体确实需要进行授权操作,需要先进行身份验证,然后再执行授权操作。身份验证可以通过调用 Subject.login(AuthenticationToken)
方法实现。
3、如果在使用 Shiro 的“Remember Me”功能时出现此问题,则需要启用 SecurityManager 中的此功能,以允许主体在下一次访问时自动恢复身份信息。
此外,如果先前已经登录的主体已经退出系统,则当前主体将被认为是匿名的,而无法进行授权操作。
所以在这种情况下,需要重新进行身份验证,并重新授权。
在解决此问题时,你还应该检查您在代码中的使用是否正确,以确保你的程序使用 Shiro 的安全功能时没有出现任何错误。
解决方法:在shiro配置时,将该请求配置了anon:
具体请求接口配置方式:
我的问题解决啦,希望你们的问题也顺利解决啦~~~