2012-04-05 3 views
3

Вот конфиг от shiro.iniShiro всегда перенаправляет меня Login.jsp

shiro.loginUrl = /login.jsp

######### URL CONFIG # ################## [urls] /login.jsp = anon/public/login/** = anon/public/app/** = authc

Полосы ...

@UrlBinding("/public/app/") 
public class CalculatorActionBean implements ActionBean { 
..... 

} 

@UrlBinding("/public/login/") 
public class UserAuthenticateBean implements ActionBean { 

    private static final transient Logger log = LoggerFactory.getLogger(UserAuthenticateBean.class); 
    private ActionBeanContext context; 
    private String username; 
    private String password; 
    private String message; 

    public ActionBeanContext getContext() { 
     return context; 
    } 

    public void setContext(ActionBeanContext context) { 
     this.context = context; 
    } 

    public String getPassword() { 
     return password; 
    } 

    public void setPassword(String password) { 
     this.password = password; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public void setUsername(String username) { 
     this.username = username; 
    } 

    @DefaultHandler 
    @DontValidate 
    public Resolution defaultHander() { 
     return new ForwardResolution("/login.jsp"); 
    } 

    public Resolution login() { 

     Subject currentUser = SecurityUtils.getSubject(); 
     log.info("CU=" + currentUser.toString()); 


     if (!currentUser.isAuthenticated()) { 
      TenantAuthenticationToken token = new TenantAuthenticationToken(username, password, "jdbcRealm"); 
      //UsernamePasswordToken token = new UsernamePasswordToken("akumar", "ash"); 
      token.setRememberMe(true); 
      try { 
       currentUser.login(token); 
      } catch (UnknownAccountException uae) { 
       log.info("There is no user with username of " + token.getPrincipal()); 
      } catch (IncorrectCredentialsException ice) { 
       log.info("Password for account " + token.getPrincipal() + " was incorrect!"); 
      } catch (LockedAccountException lae) { 
       log.info("The account for username " + token.getPrincipal() + " is locked. " 
         + "Please contact your administrator to unlock it."); 
      } // ... catch more exceptions here (maybe custom ones specific to your application? 
      catch (AuthenticationException ae) { 
       //unexpected condition? error? 
       ae.printStackTrace(); 
      } 
     } 

     if (currentUser.isAuthenticated()) { 
      message = "Success"; 
     } else { 
      message = "Fail"; 
     } 

     System.out.println(message); 


     message += getUsername() + getPassword(); 
     return new ForwardResolution("/logged_in.jsp"); 
    } 
} 

logged_in.jsp

<a href ="/oc/public/app">app</a> 

Теперь, если я удалить строку /общественная/приложение/** = authc из shiro.ini, я могу получить доступ к/Public/приложения для зарегистрированного пользователя и гостя

Если я держать линию, то никто не может получить доступ к странице, и она восходит к Login.jsp

сводишь меня с ума!

help !!

ответ

3

Измените свой URL-конфигурации, чтобы иметь «authc» фильтр фактического входа URL:

[main] 
... 
authc.loginUrl = /login.jsp 

[urls] 
/login.jsp = authc 
/public/login/** = anon 
/public/app/** = authc 

authc фильтр достаточно умен, чтобы знать, если запрос не прошел проверку подлинности, чтобы еще отпустить ее до базовой страницы поэтому пользователь может зарегистрироваться.

+0

Спасибо. Потрясающие. Просто chaing shiro.loginurl к authc.loginurl сделал трюк. Как всегда, ваши ответы были точными! – aks

+0

Рад помочь !!! –

 Смежные вопросы

  • Нет связанных вопросов^_^