2012-10-07 2 views
0

에 대한 사용자 정의 로그인 페이지 + bean 작성 내가 가진 : 넷빈즈 7.2아파치 시로

  1. 자바 EE 웹 응용 프로그램 프로젝트. Shiro-Web은 INI 파일의 표준 설정으로 설치되고 잘 작동합니다 : 사용자는 문제없이 로그인 할 수있는 표준 login.jsp 페이지로 자동으로 재 지정됩니다.

내가 원하는 :

  1. 은 로그인 프로세스는 백업 빈에 의해 처리됩니다 PrimeFaces 태그, 주석 사용자 정의 로그인 페이지 login.xhtml를 만들려면.

내가이 필요합니다

  1. 이 로그인 콩에서 수행해야하는 단계를 이해하기. 또한 적절하게 설정

    UsernamePasswordToken currentUserToken = 
        new UsernamePasswordToken(userEmail, userPassword); 
    
    try { 
        SecurityUtils.getSubject().login(currentUserToken); 
    } 
    catch(UnknownAccountException uae) { 
    
        // TODO: Notify user that no such account exists 
    } 
    catch(IncorrectCredentialsException ice) { 
        // TODO: Notify user that login attempt failed due to bad credentials 
    } 
    
    // TODO: How to set up user session an everything else, if login succeeded? 
    

    그러나, 어떤 추가 단계를 확실 사용자 세션 (그리고 다른 모든 것들)를 만들기 위해 수행해야 할 : 현재, 나는 작업 영역이 구현 있고, 나는 사용자를 인증 할 수 있어요 ? 나는 표준 Shiro 로그인 기능 (세션 설정, 적절한 설정 등)을 사용하는 것과 같은 상태에서 끝내고 싶다.

  2. 결국 로그인 페이지에서 JSR 태그를 필터링하지 않으려면 Shiro NOT을 구성하는 방법을 이해해야합니다. 현재 렌더링은 표준 HTML로 기본 설정되어 있으며 모든 그래픽이 사라집니다.

답변

1

JSF는 DefaultWebEnvironment를 처리하므로 EnvironmentLoadListener를 확장하고 영역을 추가해야합니다.

public class CdiEnvironmentLoaderListener extends EnvironmentLoaderListener { 

    //this is your implementation that extends Authorizing Realm 
    ShiroRealm shiroRealm = null; 

    @Override 
    protected WebEnvironment createEnvironment(ServletContext sc) { 
     WebEnvironment environment = super.createEnvironment(sc); 
     shiroRealm = new ShiroRealm(); 

     RealmSecurityManager rsm = (RealmSecurityManager) environment 
      .getSecurityManager(); 

     HashedCredentialsMatcher matcher = new HashedCredentialsMatcher(); 
     matcher.setHashAlgorithmName(Sha512Hash.ALGORITHM_NAME); 

     shiroRealm.setCredentialsMatcher(matcher); 

     rsm.setRealm(shiroRealm); 

     ((DefaultWebEnvironment) environment).setSecurityManager(rsm); 

     return environment; 
    } 
} 

web.xml에 사용자 정의 listner와 웹 예제의 기본 필터 및 필터 매핑을 추가하십시오.

<listener> 
    <listener-class>com.company.security.CdiEnvironmentLoaderListener</listener-class> 
</listener> 

사용자 정의 JSF 2.0 태그 라이브러리를 사용하십시오. 여기 http://deluan.github.com/shiro-faces/

소스를 발견

Apache Shiro "with JSF 2.0" ! How does it go?

http://shiro-user.582556.n2.nabble.com/Shiro-in-CDI-JPA2-JSF2-project-td7577437.html

+0

정말 같은 데이터 3 회를 지정할 필요가 없습니다. '@ ManagedBean'과'@ SessionScoped'만으로도 충분합니다. name 속성 및 faces-config.xml 항목이 필요 없습니다. –

관련 문제