shiro用authc配置url和用注解@RequiresAuthentication的问题

开源中国首席脑科主任 发布于 2015/08/16 13:14
阅读 12K+
收藏 0

<bean id="chainFilterBuff"   class="com.zqws.third.shiro.framework.security.ChainFilterBuff">

    <property name="filterChainDefinitions">

<value>

/index = authc

/home/login = anon

/home/tologin = anon

/home/logout = anon

/demo/** = user

</value>

<!-- /demo/** = authc,anyRoles["e"] -->

</property>

</bean>


针对在配置中加authc的url如果用户没登陆会让他跳转到登陆  
如果我用注解@RequiresAuthentication去实现 
1. 如果用户没登陆系统,系统给出的是异常(org.apache.shiro.authz.UnauthenticatedException: The current Subject is not authenticated.  Access denied.  )而不是让他跳转到登陆
2.如果是用户已经登陆但是没某个操作的权限,我在方法上加@RequiresPermissions(value="user:create")让他具有权限 才能执行 ,抛
org.apache.shiro.authz.UnauthorizedException: Subject does not have permission [user:create]
我是觉得第一种情况是让他登陆,第二种情况是让跳转到403

但是程序只是一味得抛异常

咋办


加载中
0
开源中国首席脑科主任
开源中国首席脑科主任

已解决 单词没看清楚  

//UnauthorizedException  没权限

    //UnauthenticatedException   没登陆

    //org.apache.shiro.authz.UnauthorizedException: Subject does not have permission [user:create]

    //org.apache.shiro.authz.UnauthenticatedException: The current Subject is not authenticated.  Access denied.

    

0
mycms2013
mycms2013

这个问题我以前就遇到到过了,shiro 跟权限相关的都是抛异常来处理的.如果要是使用注解方式.你需要定义全局异常处理. 在spring-mvc.xml中配置上这段话:

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="exceptionMappings">
            <props>
                登录
                <prop key="org.apache.shiro.authz.UnauthenticatedException">
                    redirect:/login
                </prop>
                授权
                 <prop key="org.apache.shiro.authz.UnauthorizedException">
                    redirect:/admin/common/exceptionLog
                </prop>
            </props>
        </property>
        <property name="defaultErrorView" value="error/genericView"/>
    </bean>



但是最好不要这样做.还是配置路径拦截靠谱. 因为spring mvc全局异常还要做错误信息记录的.所以用在这不好.

0
mycms2013
mycms2013
对了 你还可以参考这个说明(大概在25页左右) :http://wenku.baidu.com/view/97f5868b76eeaeaad1f33065.html
返回顶部
顶部