我遇到的问题与以下类型的消息有关:
OPTIONS http://localhost:8080
XMLHttpRequest cannot load http://localhost:8080/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 401.
因此,基本上,这是Angular JS 1.4.3前端在实际请求之前向服务器发送<code>选项
由于我无法在Angular端修复它,我认为在服务器端会很容易。会的,但我们使用Guice 4。
在 Guice 配置中,我们正确设置了 Shiro:
install(new EEShiroModule(getServletContext()));
filter("/services/*").through(GuiceShiroFilter.class);
到目前为止一切顺利。但是现在我想在系统中打一个洞,允许< code>OPTIONS请求不被验证。我在这里发现了一个类似的方法:http://blog.awolski.com/cors-dart-dropwizard-and-shiro/.
最后,我应该覆盖BasicHttpAuthenticationFilter,
但它并不像在Spring或Ini配置中那么简单,因为我无法覆盖类绑定。
最好的方法是什么?谢谢
今天我在这里遇到了类似的问题。对于CORS请求,OPTIONS
预飞行请求将被Apache Shiro视为未经身份验证,因为浏览器不会向OPTIONS
请求添加自定义标头。
为了解决这个问题。我重写了AuthentiatingFilter
的isAccess准许
方法,使其在请求的方法为OPTIONS
时始终返回true。
public class CORSAuthenticationFilter extends AuthenticatingFilter {
@Override
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
//Always return true if the request's method is OPTIONS
if(request instanceof HttpServletRequest){
if(((HttpServletRequest) request).getMethod().toUpperCase().equals("OPTIONS")){
return true;
}
}
return super.isAccessAllowed(request, response, mappedValue);
}
}
如果您正在使用< code > permissions authorizationfilter ,您也需要覆盖它。
public class CORSPermissionAuthorizationFilter extends PermissionsAuthorizationFilter {
@Override
public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws IOException {
if(request instanceof HttpServletRequest){
if(((HttpServletRequest) request).getMethod().toUpperCase().equals("OPTIONS")){
return true;
}
}
return super.isAccessAllowed(request, response, mappedValue);
}
}
覆盖这些过滤器后。它们应该在shiro的配置文件中声明为正在运行的实现。
这就是我做事的方式。希望有帮助,不过有点晚了。
我正在开发一个Web应用程序,它是rest客户端并使用rest服务(API)来执行任何操作。我集成了apache shiro以使用工作正常的jdbc领域执行身份验证。 现在,我正在寻找一种使用apacheDS LDAP执行身份验证的解决方案。我计划使用kerberos身份验证,但我没有找到任何有用的文章或示例来使用apache shiro实现kerberos身份验证。 我发现apache shir
因此,我需要找到一些使用ServletRequest和ServletResponse参数的身份验证方法。 但是,我仍然没有找到这样的ProcessingFilter或AuthenticationProvider。 根据Spring Security basic,我似乎必须重写与AuthenticationProvider相关的authenticate方法。 谢了。
我是Apache Shiro的初学者。我一直在跟踪文档和许多其他教程,博客等,但我就是无法使身份验证工作。当我尝试使用有效的用户名和密码登录时,总是会引发。我正在使用DynamoDB作为存储用户凭据的自定义领域,但我真的不认为这有什么关系。显然,我存储和/或执行凭据匹配的方式是不正确的。以下是我的设置:
我在我的网站中使用默认的route。php。 此路由复制的“照明/路由/路由器”。php’。 我用它来改变默认路线和。。。在 什么是?? 我应该在路线组中的何处定义它? 谢谢你的帮助。
我有一个已经完成的j2ee(jsf、cdi、jpa)应用程序,它完美地使用了ApacheShiro,它工作得非常好,我喜欢Shiro注释(hasRole、hasPermission等)。 现在,该项目还必须能够通过SiteMinder进行身份验证,我的问题是: 我如何设置一个领域来处理SiteMinder身份验证而不丢失Shiro授权(似乎SiteMinder会在HTTP头中给我用户名和Rolen
我有几个测试用例,有一个测试用例我想测试通知不可用。我使用了一个单独的将通知服务实例注入(覆盖)为,而不是通常的 它不起作用,因为 依赖于 Play 在此测试的启动生命周期中注入的其他模块。如何加载这些 Play 默认模块,以便 适用于此测试用例?有没有更好的方法可以做到这一点?谢谢