apache shiro

shiro 有很多默认路径设置 登录路径默认是/login.jsp

successUrl 默认是/     ???(没找到资料,测试推测结果)

logout 默认路径是 /logout


登录验证可分为两种方式实现,

第一种,使用默认的过滤登录验证操作,用户无需写login验证逻辑,loginurl必须改为authc权限

第二种,使用自定义验证操作,用户无需写login验证逻辑,loginurl必须改为anon权限

 try { 
            SecurityUtils.getSubject().login(new UsernamePasswordToken(userName, userpassword)); 
            return "/api/list";
        } catch (AuthenticationException e) { 
            logger.info("login post error");
            return "/account/login";
        } 


解决session过期后,用户再次登录后,shiro能自动跳转到之前的页面问题,

  1. 可以使用自定义验证操作改变这个问题。

  2. 可以参考:打印出session中所有的值,总有一个存的路径

  http://m.blog.csdn.net/blog/LHacker/20450855

if(WebUtils.getSavedRequest(req)!=null){
            String url = WebUtils.getSavedRequest(req).getRequestUrl();
            logger.info("url"+url);
            
        }
        
        logger.info("shiroSavedRequest"+req.getSession().getAttribute("shiroSavedRequest"));

参考:开涛博客

http://jinnianshilongnian.iteye.com/blog/2018398

参考:http://m.blog.csdn.net/blog/LHacker

http://my.oschina.net/miger/blog/283526


jsp页面权限内容显示权限控制参考:

http://www.360doc.com/content/14/0529/10/11298474_381933566.shtml


官网:http://shiro.apache.org/

注解实现:http://jinnianshilongnian.iteye.com/blog/2029717












<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <property name="securityManager" ref="securityManager" />
        <property name="loginUrl" value="/login" />
        <!-- <property name="successUrl" value="/" /> -->
        <property name="filterChainDefinitions">
            <value>
                /login = authc
                /logout = logout
                /static/** = anon
                /api/** = anon
                /register/** = anon
                /admin/** = roles[admin]
                /** = user
            </value>
        </property>
    </bean>

你可能感兴趣的:(shiro)