码迷,mamicode.com
首页 > 其他好文 > 详细

011 注解驱动权限管理

时间:2018-05-19 22:33:29      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:登录页面   创建   文件   stc   使用   动态分配   spring   ring   jsp   

一 . 概述

  在shiro之中有三种方式进行权限的管理,

(1)硬编码的方式,如subject.hasRole()这样的方式在代码之中织入.

(2)使用注解的方式进行权限管理

(3)使用jsp标签的方式进行权限控制

本节,我们使用注解的方式进行配置.


二 .环境的配置

<!-- 配置Bean的生命周期后置管理器 -->    
    <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"></bean>
    
    <!-- 配置代理创建器 
        此对象需要依赖Bean后处理器
    -->
    <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
          depends-on="lifecycleBeanPostProcessor"/>
     <!-- 配置通知 -->
    <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
        <property name="securityManager" ref="securityManager"/>
    </bean>

上面的配置需要在我们的spring.xml之中配置.

说明,如果我们想要拦截controller,那么我们就需要将此配置放置在springmvc.xml的配置文件之中.

  如果我们想要拦截service的代码,我们就需要将此配置文件放置到spring.xml文件之中.

  总的来说,这个是由spring的父子容器造成的.


三 .测试代码

@RestController
public class AdviceController {
    
    //该注解表示此功能需要认证才能访问
    @RequiresAuthentication
    @RequestMapping("/advice")
    public String advice() {
        return "advice";
    }
}

上面的方式是需要认证之后才能进行访问的,当我们没有认证的时候,我们就不能进行访问.

  此时,会抛出一个异常的信息来.

  我们可以做一个全局的异常拦截器,将页面重定向到登录页面.


 

四.总结

  完成shiro的注解配置十分的简单,只需要配置几个Bean就能完成.

  但是我们思考这么一个问题,我们使用注解其实就是硬编码.只不过编写注解变得简单了.

  因此,我们拒绝使用角色的注解,而是使用权限的注解.

  这样我们可以通过分配权限来完成权限的动态分配,如果分配的是角色,那么我们这种动态性就不存在了.  

 

011 注解驱动权限管理

标签:登录页面   创建   文件   stc   使用   动态分配   spring   ring   jsp   

原文地址:https://www.cnblogs.com/trekxu/p/9061795.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!