I am using spring mvc, so I choose PassThruAuthenticationFilter.

1: when I input /admin/home.html from my browser, it will display my login page.
2: I input right username, password and submit the form, it will go to my 
login() function. After I called Subject.login(usernamePasswordToken), I want 
to redirect to /admin/home.html

But I do not know how can I get the original web address, such as 
"/admin/home.html" ?
====================================================
@Controller
@RequestMapping("/login.html")
public class LoginController {

        @ModelAttribute("loginForm")
        public LoginForm getLoginForm(){
                LoginForm loginForm = new LoginForm();
                return loginForm;
        }

        @RequestMapping(method = RequestMethod.GET)
    public ModelAndView loginForm(HttpServletRequest request){
        ModelAndView modelAndView = new ModelAndView("login");
        return modelAndView;
    }

        @RequestMapping(method = RequestMethod.POST)
    public ModelAndView login(HttpServletRequest request, @ModelAttribute 
LoginForm loginForm, Errors errors) {

        Subject subject = SecurityUtils.getSubject();
        UsernamePasswordToken token = new 
UsernamePasswordToken(loginForm.getUsername(), loginForm.getPassword());

        try {
            subject.login(token);
        } catch (AuthenticationException e) {
                errors.reject("invalidLogin", "The username or password was not 
correct.");
        }

        if (errors.hasErrors()) {
                ModelAndView modelAndView = new ModelAndView("login");
            return modelAndView;
        } else {
          //TODO: how to redirect to user inputing URL?????????
        }
    }
}

=================================================
<bean id="shiroFilter" 
class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"
                p:securityManager-ref="securityManager"
                p:loginUrl="/login.html">
                <property name="filters">
                        <util:map>
                                <entry key="authc">
                                        <bean 
class="org.apache.shiro.web.filter.authc.PassThruAuthenticationFilter"/>
                                </entry>
                        </util:map>
                </property>
                <property name="filterChainDefinitions">
                        <value>
                                /admin/** = authc, roles[admin]
                                /user/** = authc, roles[user]
                                /public/** = anon
                                /** = authc
                        </value>
                </property>
        </bean>


Reply via email to