怎么在SpringBoot2.0中利用Shiro框架实现一个用户权限管理

  介绍

本篇文章为大家展示了怎么在SpringBoot2.0中利用Shiro框架实现一个用户权限管理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

<强>一,Shiro简介

<强> 1,基础概念

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证,授权,密码和会话管理。作为一款安全框架Shiro的设计相当巧妙.Shiro的应用不依赖任何容器,它不仅可以在JavaEE下使用,还可以应用在Java se环境中。

<强> 2,核心角色

1)主题:认证主体

代表当前系统的使用者,就是用户,在Shiro的认证中,认证主体通常就是用户名和密码,或者其他用户相关的唯一标识。

2) SecurityManager:安全管理器

Shiro架构中最核心的组件,通过它可以协调其他组件完成用户认证和授权。实际上,SecurityManager就是Shiro框架的控制器。

3)域:域对象

定义了访问数据的方式,用来连接不同的数据源,如:关系数据库,配置文件等等。

3,核心理念
Shiro自己不维护用户和权限,通过主题用户主体和领域域对象的注入,完成用户的认证和授权。

<强>二、整合SpringBoot2框架

1,核心依赖

& lt; dependency>   & lt;才能groupId> org.apache.shiro</groupId>   & lt;才能artifactId> shiro-core</artifactId>   & lt;才能version> 1.4.0</version>   & lt;/dependency>   & lt; dependency>   & lt;才能groupId> org.apache.shiro</groupId>   & lt;才能artifactId> shiro-spring</artifactId>   & lt;才能version> 1.4.0</version>   & lt;/dependency>

2, Shiro核心配置

@ configuration   public  class  ShiroConfig  {   ,/* *   ,,*,Session 经理:会话管理   ,,*,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;   ,,*,会话可以是普通java se环境的,也可以是如网络环境的;   ,,*/@ bean才能(“sessionManager")   public 才能;SessionManager  sessionManager () {   ,,,DefaultWebSessionManager  sessionManager =, new  DefaultWebSessionManager ();   ,,,//设置会话过期时间   ,,,sessionManager.setGlobalSessionTimeout (60, 60, *, *, 1000);   ,,,sessionManager.setSessionValidationSchedulerEnabled(真正的);   ,,,//,去掉shiro登录时url里的JSESSIONID   ,,,sessionManager.setSessionIdUrlRewritingEnabled(假);   ,,,return  sessionManager;   ,,}      ,/* *   ,,*,SecurityManager:安全管理器   ,,*/@ bean才能(“securityManager")   public 才能;SecurityManager  securityManager (UserRealm  userRealm, SessionManager  sessionManager), {   ,,,DefaultWebSecurityManager  securityManager =, new  DefaultWebSecurityManager ();   ,,,securityManager.setSessionManager (sessionManager);   ,,,securityManager.setRealm (userRealm);   ,,,return  securityManager;   ,,}   ,/* *   ,,*,ShiroFilter是整个Shiro的入口点,用于拦截需要安全控制的请求进行处理   ,,*/@ bean才能(“shiroFilter")   public 才能;ShiroFilterFactoryBean  shiroFilter (SecurityManager  securityManager), {   ,,,ShiroFilterFactoryBean  shiroFilter =, new  ShiroFilterFactoryBean ();   ,,,shiroFilter.setSecurityManager (securityManager);   ,,,shiroFilter.setLoginUrl (“/userLogin");   ,,,shiroFilter.setUnauthorizedUrl (“/?;   ,,,Map<字符串,String>, filterMap =, new  LinkedHashMap<在();   ,,,filterMap.put (“/userLogin",,“anon");   ,,,shiroFilter.setFilterChainDefinitionMap (filterMap);   ,,,return  shiroFilter;   ,,}   ,/* *   ,,*,管理Shiro中一些bean的生命周期   ,,*/@ bean才能(“lifecycleBeanPostProcessor")   public 才能;LifecycleBeanPostProcessor  lifecycleBeanPostProcessor (), {   ,,,return  new  LifecycleBeanPostProcessor ();   ,,}   ,/* *   ,,*,扫描上下文,寻找所有的Advistor(通知器)   ,*,才能将这些顾问应用到所有符合切入点的Bean中。   ,,*/,@ bean   public 才能;DefaultAdvisorAutoProxyCreator  defaultAdvisorAutoProxyCreator (), {   ,,,DefaultAdvisorAutoProxyCreator  proxyCreator =, new  DefaultAdvisorAutoProxyCreator ();   ,,,proxyCreator.setProxyTargetClass(真正的);   ,,,return  proxyCreator;   ,,}   ,/* *   ,,*,匹配所有加了,Shiro 认证注解的方法   ,,*/,@ bean   public 才能;AuthorizationAttributeSourceAdvisor  authorizationAttributeSourceAdvisor (SecurityManager  securityManager), {   ,,,AuthorizationAttributeSourceAdvisor  advisor =, new  AuthorizationAttributeSourceAdvisor ();   ,,,advisor.setSecurityManager (securityManager);   ,,,return 顾问;   ,,}   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

怎么在SpringBoot2.0中利用Shiro框架实现一个用户权限管理