2014-09-02 1 views
1

Можно ли использовать Spring Security или Shiro Security с Ninja Framework или Spark Framework? Я не могу найти какой-либо пример для интеграции этих фреймов безопасности с веб-фреймами. на веб-сайте ниндзя нет информации об аутентификации пользователя и безопасности веб-приложений.Безопасность Shiro или Spring с каркасом ниндзя или искры

+0

Зачем использовать искры или ниндзя. Какие у вас цели? Возможно, есть еще один контейнер, который лучше подходит вам? –

ответ

1

Spark имеет понятие об фильтрах. http://sparkjava.com/documentation.html#filters поэтому вы можете добавить фильтр Shiro или Spring Security. Тем не менее, это не так просто, как сбросить фильтр для любой из этих систем безопасности. Но в теории ...

1

Этот вопрос довольно старый, но я не могу найти какой-либо пример интеграции 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"); 
      } 
     }); 
    } 
}