基于【shiro集成spring】项目改造

引入相关依赖环境

 <!--AOP的jar包-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
</dependency>

构建shiro 注解配置

在SpringMVC的配置文件中增加以下配置

<!--shiro注解配置-->
<!--调用工程中的组件-->
<bean id="lifecycleBeanPostProcessor"
class="org.apache.shiro.spring.LifecycleBeanPostProcessor"></bean> <!--如果发现此配置,会在当前工厂中多创建一个后处理器-->
<aop:config></aop:config> <!--提供shiro注解组件-->
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
<property name="securityManager" ref="securityManager"></property>
</bean>

注解的使用

可以注解在controller类上或者方法上,可以叠加使用

@RequiresGuest  #游客身份

@RequiresAuthentication #必须登录

@RequiresRoles(value = {"admin","manager"},logical = Logical.OR) #必须是admin或者mannager的角色

@RequiresPermissions("user:query") #必须有user:query的权限

未登录或者无权限跳转页面

com\shiro\resolver\MyExceptionResolver.java

package com.shiro.resolver;

import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authz.UnauthenticatedException;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; public class MyExceptionResolver implements HandlerExceptionResolver {
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object o, Exception e) {
System.out.println(e.getClass());
ModelAndView mv = new ModelAndView();
if(e instanceof IncorrectCredentialsException ||
e instanceof UnknownAccountException ||
e instanceof UnauthenticatedException){
//跳转到登录界面
mv.setViewName("redirect:/user/login");
}
return mv;
}
}

注册自定义异常类

resources\springmvc-servlet.xml

<bean class="com.shiro.resolver.MyExceptionResolver"></bean>

删除shiro配置文件的相关配置

shiroFilter bean标签只保留以下内容 其他的内容删掉

resources\spring-shiro.xml

<!--shiroFilter 角色权限校验-->
<bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
<!--注入核心对象:securityManager-->
<property name="securityManager" ref="securityManager" />
</bean>

登出

@RequestMapping("/logout")
public String logout(){
SecurityUtils.getSubject().logout();
return "login";
}

最新文章

  1. Flash Builder 4.7 注册机完美激活方法
  2. DataTable转换为Json格式
  3. ThinkPHP 3.2.3心得
  4. Scrum站立会议----11月4日
  5. 模块&quot;xxxx.dll&quot;已加载,但对DllRegisterServer的调用失败,错误代码为 XXXXXXXXX
  6. 我的第一个jquery插件:下拉多选框
  7. 手把手教你使用UICollectionView写公司的项目
  8. javascript基础之for循环
  9. Java性能漫谈-数组复制之System.arraycopy
  10. 20170515-20170523学习计划---学习java(1)
  11. jsp 按钮颜色
  12. PHP 注释 数据类型 变量的定义/输出 类型的获取/转换 可变变量
  13. 探究Angular依赖注入对象$injector
  14. http跳转htts的htaccess文件设置
  15. inout口在modelsim仿真的方法
  16. mysql滑动订单问题
  17. face detection[SSH]
  18. xilinx_all_version.lic
  19. java 全局变量 的小结
  20. java 内部类注意点

热门文章

  1. coding++ :MySQL 使用 SQL 语句查询数据库所有表注释已经表字段注释
  2. nodejs使用express中静态资源托管(express.static())时遇到的bug
  3. 史上最详细的Docker安装手册
  4. 16.如何查找所需的maven的依赖
  5. [Asp.Net Core] 为什么选择 Blazor Server Side (一) 快速实现图片验证码
  6. Java 数组 字符 函数
  7. bootstrip安装
  8. 7.Metasploit后渗透
  9. O - 推箱子 HDU - 1254(bfs_box + bfs_man)
  10. go 基本包