一、在web.xml中添加shiro过滤器 
  1. <!-- Shiro filter-->
  2. <filter>
  3. <filter-name>shiroFilter</filter-name>
  4. <filter-class>
  5. org.springframework.web.filter.DelegatingFilterProxy
  6. </filter-class>
  7. </filter>
  8. <filter-mapping>
  9. <filter-name>shiroFilter</filter-name>
  10. <url-pattern>/*</url-pattern>
  11. </filter-mapping>

二、在Spring的applicationContext.xml中添加shiro配置 
1、添加shiroFilter定义 

  1. <!-- Shiro Filter -->
  2. <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
  3. <property name="securityManager" ref="securityManager" />
  4. <property name="loginUrl" value="/login" />
  5. <property name="successUrl" value="/user/list" />
  6. <property name="unauthorizedUrl" value="/login" />
  7. <property name="filterChainDefinitions">
  8. <value>
  9. /login = anon
  10. /user/** = authc
  11. /role/edit/* = perms[role:edit]
  12. /role/save = perms[role:edit]
  13. /role/list = perms[role:view]
  14. /** = authc
  15. </value>
  16. </property>
  17. </bean>

2、添加securityManager定义 

  1. <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
  2. <property name="realm" ref="myRealm" />
  3. </bean>

3、添加realm定义 

  1. <bean id=" myRealm" class="com...MyRealm" />

三、实现MyRealm:继承AuthorizingRealm,并重写认证授权方法 

  1. public class MyRealm extends AuthorizingRealm{
  2. private AccountManager accountManager;
  3. public void setAccountManager(AccountManager accountManager) {
  4. this.accountManager = accountManager;
  5. }
  6. /**
  7. * 授权信息
  8. */
  9. protected AuthorizationInfo doGetAuthorizationInfo(
  10. PrincipalCollection principals) {
  11. String username=(String)principals.fromRealm(getName()).iterator().next();
  12. if( username != null ){
  13. User user = accountManager.get( username );
  14. if( user != null && user.getRoles() != null ){
  15. SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
  16. for( SecurityRole each: user.getRoles() ){
  17. info.addRole(each.getName());
  18. info.addStringPermissions(each.getPermissionsAsString());
  19. }
  20. return info;
  21. }
  22. }
  23. return null;
  24. }
  25. /**
  26. * 认证信息
  27. */
  28. protected AuthenticationInfo doGetAuthenticationInfo(
  29. AuthenticationToken authcToken ) throws AuthenticationException {
  30. UsernamePasswordToken token = (UsernamePasswordToken) authcToken;
  31. String userName = token.getUsername();
  32. if( userName != null && !"".equals(userName) ){
  33. User user = accountManager.login(token.getUsername(),
  34. String.valueOf(token.getPassword()));
  35. if( user != null )
  36. return new SimpleAuthenticationInfo(
  37. user.getLoginName(),user.getPassword(), getName());
  38. }
  39. return null;
  40. }
  41. }

基于Spring框架的Shiro配置的更多相关文章

  1. 基于Spring框架的Shiro配置(转发:http://kdboy.iteye.com/blog/1103794)

    一.在web.xml中添加shiro过滤器 <!-- Shiro filter--> <filter> <filter-name>shiroFilter</f ...

  2. 基于Spring Boot和Shiro的后台管理系统FEBS

    FEBS是一个简单高效的后台权限管理系统.项目基础框架采用全新的Java Web开发框架 —— Spring Boot 2.0.3,消除了繁杂的XML配置,使得二次开发更为简单:数据访问层采用Myba ...

  3. 基于Spring框架的简单多数据源切换解决办法

    基于Spring框架的简单多数据源切换解决办法 Spring框架JDBC包提供了一个抽象类AbstractRoutingDataSource提供了动态切换数据库的基础方法.我们仅仅需要实现一个简单的数 ...

  4. 基于Spring框架应用的权限控制系统的研究和实现

    摘 要: Spring框架是一个优秀的多层J2EE系统框架,Spring本身没有提供对系统的安全性支持.Acegi是基于Spring IOC 和 AOP机制实现的一个安全框架.本文探讨了Acegi安全 ...

  5. String框架搭建的基本步骤,及从 IOC & DI 容器中获取 Bean(spring框架bean的配置)--有实现数据库连接池的链接

    Spring框架的插件springsource-tool-suite-3.4.0.RELEASE-e4.3.1-updatesite(是一个压缩包)导入步骤: eclipse->help-> ...

  6. 《Java Spring框架》SpringXML配置详解

    Spring框架作为Bean的管理容器,其最经典最基础的Bean配置方式就是纯XML配置,这样做使得结构清晰明了,适合大型项目使用.Spring的XML配置虽然很繁琐,而且存在简洁的注解方式,但读懂X ...

  7. 基于Spring Cloud 几行配置完成单点登录开发

    单点登录概念 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. ...

  8. Spring框架bean的配置(2):SpEL:引用 Bean、属性和方法。。。

    将这些架包放入在工程目录下建立的lib文件夹里,并解压 commons-logging-1.1.1 spring-aop-4.0.0.RELEASE spring-beans-4.0.0.RELEAS ...

  9. 第一次玩博客,今天被安利了一个很方便JDBC的基于Spring框架的一个叫SimpleInsert的类,现在就来简单介绍一下

    首先先对这段代码的简单介绍,我之前在需要操作JDBC的时候总是会因为经常要重新写SQL语句感到很麻烦.所以就能拿则拿不能拿的就简单地封装了一下. 首先是Insert.Spring框架的JDBC包里面的 ...

随机推荐

  1. linux 环境变量PATH路径的三种方法

    转:http://www.jb51.net/LINUXjishu/150167.html 总结:修改1.#PATH=$PATH:/etc/apache/bin  或者#vi /etc/profile ...

  2. SQLServer更新语句要注意

    在SQLServer中 update语句中对于表不能使用别名 eg:update table a set a.column="" where ... 这样在SQLServer中是不 ...

  3. My Game --背景

    在GitHub MyGame clone 代码,添加到配置并新建好的工程中运行下来就可以看到这个画面: 中间的小点是显示的当前触摸点,本文暂不讨论.图中的蓝天是蓝色的 LayerColor this- ...

  4. hdu 4747 Mex

    http://acm.hdu.edu.cn/showproblem.php?pid=4747 设我们输入的数组为 a[],我们需要从 1 到 n 遍历, 假设遍历到 i 时, 遍历的过程中用b[j]表 ...

  5. TreeSet和Comparator 对TreeSet排序

    使用TreeSet和Comparator,编写TreeSetTestInner类,要求对TreeSet中的元素"HashSet"."ArrayList".&qu ...

  6. Java设计模式系列1--原型模式(Prototype Method)

    2014-02-14 11:27:33 声明:本文不仅是本人自己的成果,有些东西取自网上各位大神的思想,虽不能一一列出,但在此一并感谢! 原型模式,从名字即可看出,该模式的思想就是将一个对象作为原型, ...

  7. UITableViewCell自定义

    ⼀.⾃定义Cell     UITableView中系统的cell共提供了四种默认样式,分别是: UITableViewCellStyleDefault UITableViewCellStyleVal ...

  8. 使用excel快速制表 拒绝粗心

    办公室打印个表格 使用了word打印后 发现 id重复很多 只好网上找了点excel 2003资料 学习小 快速制作表格 新建一个excel文件. 在新建excel中,用鼠标选中需要的表格行数列数,然 ...

  9. 由ArrayList构造函数源码引出的问题

    ArrayList应该用得很多了.最近看了看其源码,发现有很多细节,如果要我们自己来实现,估计会考虑不到.当然,这些细节跟jdk本身一些实现的bug有关,如果不去深挖,定然是不能发现.本文从Array ...

  10. Android MediaRecorder录制音频

    今天介绍一下在Android中怎么录制音频,在Android中使用MediaRecorder来录制音频,步骤: 1.创建MediaRecorder对象. 2.调用MediaRecorder对象的set ...