shiro框架的四中权限控制方式

一.在自定义的realm中进行权限控制

  在applicationContext.xml文件中添加  /areaAction_pageQuery.action = perms["area"]

<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
        <!-- 注入shiro框架核心对象,安全管理器 -->
        <property name="securityManager" ref="securityManager"/>
        <!--private String loginUrl;登录页面
               private String successUrl;登录成功后跳转页面
               private String unauthorizedUrl;权限不足时的提示页面-->
         <property name="loginUrl" value="/login.html"/>
         <property name="successUrl" value="/index.html"/>
         <property name="unauthorizedUrl" value="/unauthorized.html"/>
         <!-- 指定URL拦截规则 -->
         <property name="filterChainDefinitions">
             <!--authc:代表shiro框架提供的一个过滤器,这个过滤器用于判断当前用户是否已经完成认证,
                         如果当前用户已经认证,就放行,如果当前用户没有认证,跳转到登录页面
                 anon:代表shiro框架提供的一个过滤器,允许匿名访问-->
             <value>
                 /css/* = anon
                 /images/* = anon
                 /js/** = anon
                 /validatecode.jsp* = anon
                 /userAction_login.action = anon
                 /areaAction_pageQuery.action = perms["area"]
                 /** = authc
             </value>
         </property>
    </bean>

  此时访问areaAction_pageQuery.action是页面不会查询到数据,须要为用户授权

  在自定义realm中为用户授权

@Override
    /**
     * 授权方法
     */
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) {
        SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
        //为用户授权,只需将用户的权限添加info中即可
        info.addStringPermission("area");
        return info;
    }

二.使用shiro的方法注解为用户授权

  1.在spring配置文件applicationContext.xml中配置开启shiro注解支持

<!-- 基于spring自动代理方式为service创建代理对象,实现权限控制 -->
    <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
        <!-- 强制使用cglibdaili -->
        <property name="proxyTargetClass" value="true"></property>
    </bean>
    <!-- 配置切面 -->
    <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
        <property name="securityManager" ref="securityManager"></property>
    </bean>

  2.配置事物注解,强制使用cglib代理

<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />

  3.在service上配置注解

 1 @RequiresPermissions("courier:delete")
 2     public void deleteBatch(String ids) {
 3         //判断是否为空
 4         if(StringUtils.isNoneBlank(ids)){
 5             String[] idsArrays = ids.split(",");
 6             for (String id : idsArrays) {
 7                 Integer courierid = Integer.parseInt(id);
 8                 dao.deleteCourier(courierid);
 9             }
10         }
11     }

三.使用shiro标签进行权限控制

  1.在jsp页面中引入shiro标签库

<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>

  2.在页面中使用标签

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <!-- 判断当前用户是否已经认证,已认证就可以看到标签中的内容 -->
    <shiro:authenticated>
        看到内容就说明你已经认证成功了!
    </shiro:authenticated>

    <br>

    <!-- 判断当前用户是否拥有指定的权限 -->
    <shiro:hasPermission name="area">
        <input value="这是判断权限的按钮">
    </shiro:hasPermission>

    <br>

    <!-- 判断当前用户是否拥有指定的角色 -->
    <shiro:hasRole name="admin">
        <input value="这是判断角色的按钮">
    </shiro:hasRole>
</body>
</html>

四.编程方式实现用户权限控制(了解)

时间: 06-29

shiro框架的四中权限控制方式的相关文章

shiro权限控制方式

1.基于配置文件(*.ini)[常用jdbcRealm.ini] 2.基于注解的配置 3.基于jsp标签的配置(需要导入对应的标签jar包) 权限包含: 是否为特定用户 是否为特定角色 是否拥有特定操作权限(比如:删除) 是否为已认证的用户(通过登录及通过记住我登录为两种不同的认证)

基于MVC4+EasyUI的Web开发框架形成之旅--权限控制

我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大概介绍了基于MVC的Web开发框架的权限控制总体思路.其中的权限控制就是分为"用户登录身份验证"."控制器方法权限控制"."界面元素权限控制"三种控制方式,可以为Web开发框架本身提供了很好用户访问控制和权限控制,使得用户界面呈现菜单.Web界面的按钮和内容.Action的提交控制,均能在总体权限功能分配和控制之下. 本篇文章主要细化这三个方面

权限控制

权限概述 系统中有很多功能,这些功能并不是每一个登录的用户都能操作的,需要对用户操作系统的能力进行限制,该过程就叫权限 认证:系统提供的标识用户身份的功能(通常实现比如:登录)(告诉系统你是谁?) 授权:系统提供的根据用户的身份赋予其不同的操作系统能力功能(告诉系统你能做什么?) 系统启动 ---->web.xml|--->spring容器--->扫描Action Service Dao |--->OAListener---->通过spring容器中的service加载权限数

基于MVC4+EasyUI的Web开发框架形成之旅(7)--权限控制

我在上一篇随笔<基于MVC4+EasyUI的Web开发框架形成之旅--框架总体界面介绍>中大概介绍了基于MVC的Web开发框架的权限控制总体思路.其中的权限控制就是分为“用户登录身份验证”.“控制器方法权限控制”.“界面元素权限控制”三种控制方式,可以为Web开发框架本身提供了很好用户访问控制和权限控制,使得用户界面呈现菜单.Web界面的按钮和内容.Action的提交控制,均能在总体权限功能分配和控制之下. 本篇文章主要细化这三个方面的介绍,重点介绍“控制器方法权限控制”.“界面元素权限控制”

Shiro权限控制框架入门1:Shiro的认证流程以及基本概念介绍

前言:我在最开始学习Shiro这个框架时,在网上搜索到的一个介绍比较全面的教程是:<跟我学Shiro>系列教程.但是在我看了他写的前几篇文章后,我发现虽然他在这个系列教程中把shiro的一些特性介绍地非常全面详细,但是整个教程的叙述方式还是有很大缺陷的.文章与文章之间并没有很好地串联起来,每篇文章介绍的东西都过于分散了,如果是对shiro完全不了解的新手来看的话完全是一场噩梦.就像一个网友评价的这样: 看了看这个教程,看完之后都想放弃shiro了,完全看不懂,后来百度了很多别的资料才理解了sh

springmvc+spring+mybatis+maven项目集成shiro进行用户权限控制【转】

项目结构: 1.maven项目的pom中引入shiro所需的jar包依赖关系 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <dependency>     <groupid>javax.servlet</groupid>     javax.servlet-api</artifactid>     <version>3.0.1</version>

springMVC和Shiro框架整合使用简单示例 【转】

一.目录结构 首先是目录结构如图: 二.pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0

SpringMVC + Mybatis + SpringSecurity(权限控制到方法按钮) + Rest(服务) + Webservice(服务) + Quartz(定时调度)+ Lucene(搜索引擎) + HTML5 bootstrap + Maven项目构建绝对开源平台

框架整合: Springmvc + Mybatis + Shiro(权限) + REST(服务) + WebService(服务) + JMS(消息) + Lucene(搜搜引擎) + Quartz(定时调度) + Bootstrap Html5(支持PC.IOS.Android) 需要源码请加Q:3121026417   此处[源码获取地址] 框架简介: 项目Maven构建,真实大型互联网架构,做到高并发,大数据处理,整个项目使用定制化服务思想,提供模块化.服务化.原子化的方案,将功能模块进行

Shiro Ajax请求没有权限返回JSON,没有登录返回JSON

本文基于Shiro权限注解方式来控制Controller方法是否能够访问. 例如使用到注解: @RequiresPermissions 来控制是否有对应权限才可以访问 @RequiresUser 来控制是否存在用户登录状态才可以访问 想了解Shiro是如何通过注解来控制权限的,可以查看源码 AopAllianceAnnotationsAuthorizingMethodInterceptor ,其构造方法中添加了几个对应的权限注解方法拦截器(这里不做详细阐述). 用户在请求使用这些注解方式控制的方

Sql Server来龙去脉系列 必须知道的权限控制基础篇

题外话:最近看到各种吐槽.NET怎么落寞..NET怎么不行了..NET工资低的帖子.我也吐槽一句:一个程序猿的自身价值不是由他选择了哪一门技术来决定,而是由他自身能创造出什么价值来决定. 在进入本篇内容之前,这里有几个问题: 1.一般程序猿都知道怎样创建.修改.登录账号,但知不知道登陆账号存储在哪个表或者视图? 2.数据库中其实存在登录账号和用户两个概念,你能解释清楚这两个概念吗? 3.对于一个登录账号,我们可以为他设置哪些权限? 4.你清不清楚数据库信息存储在哪些表或试图? 5.我们可以给登录