我们经常会需要把登录成功后的用户信息保存到session中,但是如果我们使用shiro做权限管理,该怎么去实现呢?其实很简单

  第一步:写一个类CustomFormAuthenticationFilter继承FormAuthenticationFilter,并重写onLoginSuccess方法,以下是我的实现

    @Override 
    protected boolean onLoginSuccess(AuthenticationToken token, Subject subject, ServletRequest request, 
            ServletResponse response) throws Exception { 
        //获取已登录的用户信息 
        ActiveUser activeUser = (ActiveUser) subject.getPrincipal(); 
        //获取session 
        HttpServletRequest httpServletRequest = WebUtils.toHttp(request); 
        HttpSession session = httpServletRequest.getSession(); 
        //把用户信息保存到session 
        session.setAttribute("activeUser", activeUser); 
        return super.onLoginSuccess(token, subject, request, response); 
    }

  第二步:在spring-shiro配置文件中注入该bean

    <bean id="formAuthenticationFilter" class="com.lgf.bookstore.shiro.CustomFormAuthenticationFilter"> 
        <property name="usernameParam" value="username" /> 
        <property name="passwordParam" value="password" /> 
    </bean>

  这样就可以了,是不是很简单。

  原创文章,转载请注明出处。

 

评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

ehcache导致Tomcat重启出错