【问题标题】:Shiro or Spring Security with Ninja framework or SparkShiro 或 Spring Security 与 Ninja 框架或 Spark
【发布时间】:2014-10-27 03:37:39
【问题描述】:

我可以将 Spring Security 或 Shiro Security 与 Ninja Framework 或 Spark Framework 一起使用吗?我找不到任何将此安全框架与网络框架集成的示例。 ninja 网站中没有任何关于用户身份验证和 Web 应用程序安全性的信息。

【问题讨论】:

  • 为什么使用 Spark 或 Ninja。你的目标是什么?也许还有另一个更适合您需要的容器?

标签: spring-security apache-spark shiro


【解决方案1】:

如果你想保护 web restful api,建议使用安全性 - https://github.com/tomsun28/sureness
它没有特定的框架依赖(支持springboot、quarkus、javalin、ktor等)。
Sureness 的本质是拦截所有的 rest 请求进行身份验证和授权。
拦截器可以是过滤器,也可以是spring拦截器,它会拦截所有的请求来检查它们。

你需要知道的是,sureness是我们创建的一个项目,欢迎使用。

【讨论】:

  • 到目前为止,您唯一的答案是宣传我认为是您自己的项目,而没有说明它是由您完成的。请注意,如果您继续这样做,这可能会被视为垃圾邮件。
  • @Kemp 抱歉,我是回答问题的新手。我稍后会更正。
【解决方案2】:

Spark 有过滤器的概念。 http://sparkjava.com/documentation.html#filters 因此您可以添加 Shiro 或 Spring Security 过滤器。也就是说,这并不像为这些安全框架中的任何一个添加过滤器那样简单。但理论上...

【讨论】:

    【解决方案3】:

    这个问题很老了,但我找不到任何将 Apache Shiro 与 Ninja Framework 集成的例子,所以这是我的发现。

    Ninja Framework 需要一个 AbstractModule 的实例,当您尝试类似推荐的配置 here 时,它会显示一个错误:

    package conf;
    
    import com.google.inject.AbstractModule;
    import com.google.inject.Provides;
    import org.apache.shiro.config.Ini;
    import org.apache.shiro.realm.text.IniRealm;
    import org.apache.shiro.guice.ShiroModule;
    
    class Module extends ShiroModule {
        protected void configureShiro() {
            try {
                bindRealm().toConstructor(IniRealm.class.getConstructor(Ini.class));
            } catch (NoSuchMethodException e) {
                addError(e);
            }
        }
    
        @Provides
        Ini loadShiroIni() {
            return Ini.fromResourcePath("classpath:shiro.ini");
        }
    }
    

    但是检查 ShiroModule 类的源代码,我注意到它扩展了 PrivateModule 所以这应该可以工作,至少我没有编译错误:

    package conf;
    
    import com.google.inject.AbstractModule;
    import com.google.inject.Provides;
    import org.apache.shiro.config.Ini;
    import org.apache.shiro.realm.text.IniRealm;
    import org.apache.shiro.guice.ShiroModule;
    
    public class Module extends AbstractModule
    {
        @Override
        protected void configure()
        {
            install(new ShiroModule()
            {
                @Override
                protected void configureShiro()
                {
                    //shiro recomended configuration
                    try {
                        bindRealm().toConstructor(IniRealm.class.getConstructor(Ini.class));
                    } catch (NoSuchMethodException e) {
                        addError(e);
                    }
                }
    
                @Provides
                Ini loadShiroIni()
                {
                    return Ini.fromResourcePath("classpath:shiro.ini");
                }
            });
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-04-08
      • 2016-12-17
      • 2016-12-21
      • 2018-06-15
      • 2011-08-26
      • 2016-11-29
      • 1970-01-01
      • 2017-09-28
      相关资源
      最近更新 更多