[ 
https://issues.apache.org/jira/browse/SHIRO-606?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Brian Demers updated SHIRO-606:
-------------------------------
    Fix Version/s:     (was: 1.3.2)

> Exception thrown in the log-in process is being ignored.
> --------------------------------------------------------
>
>                 Key: SHIRO-606
>                 URL: https://issues.apache.org/jira/browse/SHIRO-606
>             Project: Shiro
>          Issue Type: Improvement
>          Components: Authentication (log-in)
>    Affects Versions: 1.3.2
>         Environment: OS: Windows 10
> Java Version: 1.8.0_51
> Web Server:Tomcat 8
> IDE: Eclipse Mars for JEE
>            Reporter: Liang Weiwei
>              Labels: newbie, patch
>   Original Estimate: 101.5h
>  Remaining Estimate: 101.5h
>
>     In my opinion, AbstractAuthenticator.authenticate(AuthenticationToken 
> token) handles exception inappropriately. When the exception thrown in the 
> try block is not instance of Authentication, the method will wrap the 
> exception to a Authentication instance, and throw it all the way to 
> AuthenticatingFilter.executeLogin(ServletRequest request, ServletResponse 
> response), and just return a boolean.
>     The process mentioned above, make the exception ignored, which make it 
> hard for us to find out the mistake because the user can not take over the 
> exception handling job directly.
>     We can do some extension to handle the issue.I look into the source code 
> and find out two ways about handling the exception.First, write a class that 
> implements the AuthenticationListener, and inject it to the 
> ModularRealmAuthenticator instance, then the listener we write will handle 
> the exception in AbstractAuthenticator.notifyFailure(AuthenticationToken 
> token, AuthenticationException ae).Second, 
> FormAuthenticationFilter.setFailureAttribute(ServletRequest request, 
> AuthenticationException ae), this method seems insignificant and cant help, 
> because it only set a requset atrribute and the attribute value always is 
> "AuthenticationException", ignores everything about the original Exception.
>     Although there is a way to handle the exception on our own, I still dont 
> think the exception should be ignored in the Shiro log-in process.
>     In addtion, the way to handle the exception is a little tricky.In my 
> situation, I am using Spring with Shiro, and I have to write a Class that 
> extends the ModularRealmAuthenticator in order to inject the listener through 
> constructor-arg, because through value-inject a exception will be thrown.Of 
> course, without Spring, we could write a ModularRealmAuthenticator's 
> subclass, and assign a List<AuthenticationListener> to the instance's field.
>     It  is easy to reproduce the issue, any exception thrown in the process 
> metnioned above will cause the problem.This is my first open issue and I am 
> sorry I dont know how to provide a test appropriately.
>      
>     



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to