当前常用流行的安全框架主要有两种:一个是Apache Shiro;另一个是Springsource。

现在介绍一下apache shiro

既然是安全框架,解决的肯定是权限的 控制。所谓权限是指:用户和系统之间的关系,即,某一组或一类用户在系统中所具有的不同的功能。在这为了更能诠释其关系,我们引用了角色,一个用户至少有 一个角色,不同的角色在系统之中具有不同的功能,用户不能直接和系统建立关系,只能通过角色来体现。如在数据库中有四个表来体现:用户表,角色表,权限 表,及用户的group表。用户和角色是多对多关系,角色和权限是一对多关系。

在项目中使用步骤如下:

一、在web.xml中配置

<filter> 
        <filter-name>shiroFilter</filter-name> 
        <filter-class>  org.springframework.web.filter.DelegatingFilterProxy  </filter-class> 
  </filter> 
<filter-mapping> 
  <filter-name>shiroFilter</filter-name> 
  <url-pattern>/*</url-pattern> 
</filter-mapping>

二、建立Dbrealm

@Component 
public class ShiroDbRealm extends AuthorizingRealm{ 
 
@Resource 
private UserService userService; 
//登录认证

@Override 
protected AuthenticationInfo doGetAuthenticationInfo( AuthenticationToken authenticationToken) throws AuthenticationException { 
 
UsernamePasswordToken token = (UsernamePasswordToken) authenticationToken; 
User user = userService.findByLoginName(token.getUsername()); 
if(user != null) { 
  return new SimpleAuthenticationInfo(user.getLoginname(), 
      user.getPassword(),getName()); 

 
return null; 
}

//权限认证

@Override 
protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection  
  principalCollection) { 
String loginName =  
  (String) principalCollection.fromRealm(getName()).iterator().next(); 
User user = userService.findByLoginName(loginName); 
if(user != null) { 
SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(); 
//添加Group 
info.setRoles(user.getGroupNameSet()); 
for(Group g : user.getGroupList()) { 
//添加permission 
info.addStringPermissions(g.getPermissionStringList()); 

return info; 

return null; 
}

}

三、在applicationContext-shiro.xml配置

<bean id="securityManager"  
  class="org.apache.shiro.web.mgt.DefaultWebSecurityManager"> 
<property name="realm" ref="shiroDbRealm" /> 
<property name="cacheManager" ref="cacheManager" /> 
</bean> 
 
<!-- 項目自定义Realm --> 
<bean id="shiroDbRealm" class="com.kaishengit.services.account.ShiroDbRealm" /> 
 
<!-- Shiro Filter --> 
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean"
<property name="securityManager" ref="securityManager" /> 
<property name="loginUrl" value="/user!input.jspx" /> 
<property name="successUrl" value="/main.jspx" /> 
<property name="unauthorizedUrl" value="/403.jsp" /> 
<property name="filterChainDefinitions"> 
    <value> 
    /user!login.jspx = anon 
    /user.jsp = roles[user] 
    /** = authc 
 </value> 
</property>

</bean>

<bean id="cacheManager"  
class="org.apache.shiro.cache.MemoryConstrainedCacheManager" /> 
 
<bean id="lifecycleBeanPostProcessor"  
class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />

四、登录和退出

try { 
   SecurityUtils.getSubject().login( 
  new UsernamePasswordToken(user.getLoginname(), user.getPassword())); 
} catch (AuthenticationException e) { 
msg = "用户名或密码错误!"; 
return INPUT; 

 
//exit 
SecurityUtils.getSubject().logout();

五、标签

<%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %>
 
Hello, <shiro:principal/>, how are you today? 
 
<shiro:hasRole name="administrator">  
  <a href="admin.jsp">Administer the system</a>  
 </shiro:hasRole> 
<shiro:hasAnyRoles name=“developer, manager,administrator">  
You are either a developer, manager, or administrator.   
 </shiro:lacksRole> 
<shiro:hasPermission name="user:create">  
<a href="createUser.jsp">Create a new User</a>   
 </shiro:hasPermission>

Apache Shiro(安全框架)的更多相关文章

  1. Apache Shiro权限框架在SpringMVC+Hibernate中的应用

    在做网站开发中,用户权限必须要考虑的,权限这个东西很重要,它规定了用户在使用中能进行哪 些操作,和不能进行哪些操作:我们完全可以使用过滤器来进行权限的操作,但是有了权限框架之后,使用起来会非常的方便, ...

  2. Apache Shiro 权限框架

    分享一个视屏教程集合 http://www.tudou.com/home/konghao/item 1.Shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码 ...

  3. 关于Apache Shiro权限框架的一些使用误区的解释

    多了不说了,进入正题,shiro是个权限框架提供权限管理等功能,网上的教程一般都是互相抄,比如<shiro:principal property="xxx"/>这个标签 ...

  4. Java开源安全框架之Apache Shiro

    APACHE SHIRO安全框架 1      背景 Shiro项目始于2003年初,当时它叫JSecurity项目,当时对于Java应用开发人员没有太多的安全替代方案,始终被一个叫JAAS(Java ...

  5. Apache Shiro和Spring Security的详细对比

    参考资料: 1)Apache Shiro Apache Shiro:http://shiro.apache.org/ 在Web项目中应用 Apache Shiro:http://www.ibm.com ...

  6. SpringBoot集成Apache Shiro

    笔者因为项目转型的原因,对Apache Shiro安全框架做了一点研究工作,故想写点东西以便将来查阅.之所以选择Shiro也是看了很多人的推荐,号称功能丰富强大,而且易于使用.实践下来的确如大多数人所 ...

  7. Apache Shiro 开源权限框架

    在 Web 项目中应用 Apache Shiro 开源权限框架 Apache Shiro 是功能强大并且容易集成的开源权限框架,它能够完成认证.授权.加密.会话管理等功能.认证和授权为权限控制的核心, ...

  8. Apache Shiro java安全框架

    什么是Apache Shiro? Apache Shiro(发音为“shee-roh”,日语“堡垒(Castle)”的意思)是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理功能,可为 ...

  9. JAVAEE——BOS物流项目10:权限概述、常见的权限控制方式、apache shiro框架简介、基于shiro框架进行认证操作

    1 学习计划 1.演示权限demo 2.权限概述 n 认证 n 授权 3.常见的权限控制方式 n url拦截权限控制 n 方法注解权限控制 4.创建权限数据模型 n 权限表 n 角色表 n 用户表 n ...

随机推荐

  1. 经典实用jQuery soChange幻灯片实例演示

    soChange一款多很经典的幻灯片的jQuery插件. 实例预览 引入文件 <link rel="stylesheet" type="text/css" ...

  2. webpack常用的插件安装命令

    webpack常用的插件安装命令:1:npm install html-webpack-plugin --save-dev //自动快速的帮我们生成HTML.2:npm install css-loa ...

  3. [js开源组件开发]图片懒加载lazyload

    图片懒加载lazyload 前端对请求的一种优化方式,为什么叫懒加载,无从查起,反正我当初一直认为它是滚动加载的一种类型.它主要是以图片或背景在可视区域内时才显示真正的图片,减少src带来的负荷.所以 ...

  4. SharePoint 2010 文档管理之过期归档工具

    前言:使用过SharePoint的人都知道,SharePoint对于操作是便捷的,但是对于数据量承载却是不令人满意的,这样,就要求我们需要更加合理的使用,规范大家的使用规则和习惯,所以,定期清理不必要 ...

  5. How to upgrade workflow assembly in MOSS 2007

    This problem generally start when you are having an existing custom workflow and there are instances ...

  6. iOS 基础日记-修饰符

    今晚随便温习了一下iOS 基础关于修饰符这块的东西,下面简单的来描述一下,其中有的也是在网络学习到的: strong与weak是由ARC新引入的对象变量属性 ARC的解释:ARC引入了新的对象的生命周 ...

  7. 系统自带的NSJSONSerialization解析json文件

    #import "ViewController.h" #import "Student.h" #import "GDataXMLNode.h" ...

  8. 多线程基础(五)NSThread线程通信

    5.多线程基础 线程间通信   什么叫线程间通信 在一个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信   线程间通信的体现 1个线程传递数据给另一个线程 在1个线程中执行完特定任务后, ...

  9. VIP - virtual IP address

    virtual IP address (虚拟 IP 地址)1.是集群的ip地址,一个vip对应多个机器2.与群集关联的唯一 IP 地址 see wiki: A virtual IP address ( ...

  10. UVa 109 - SCUD Busters(凸包计算)

    题目来源:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&pa ...