SpringSecurity(安全)、Shiro简介

x33g5p2x  于2021-09-24 转载在 Spring  
字(1.4k)|赞(0)|评价(0)|浏览(327)

在web开发中,安全第一位!过滤器,拦截器~
开发网站,安全应该在什么时候考虑?

  • 漏洞,隐私泄漏~
  • 架构一旦确定~
    shiro、SpringSecurity,这两个很像,除了类不一样,名字不一样;
    认证,授权(每个用户都有哪些权限)
  • 功能权限
  • 访问权限
  • 菜单权限
  • …拦截器,过滤器:大量的原生代码~冗余
    AOP:横切~配置类

1、Spring Security

简介
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

  • WebSecurityConfigurerAdapter:自定义Security策略
  • AuthenticationManagerBuilder:自定义认证策略
  • @EnableWebSecurity:开启WebSecurity模式,@Enablexxxxx开启某个功能
    Spring Security的两个主要目标是“认证”和“授权”(访问控制)
    “认证”(Authentication)
    “授权”(Authorization)
    这个概念是互通的,而不是只在Spring Security中存在
    参考官网:Spring-Security找到对应的帮助文档

2、Shiro简介

2.1、什么是Shiro?

  • Apache Shiro是一个Java的安全(权限)框架。
  • Shiro可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE环境,也可以用在JavaEE环境。
  • Shiro可以完成认证,授权,加密,会话管理,Web集成,缓存等。
  • 下载地址:Shiro官网

Shiro

  1. 导入依赖
  2. 配置文件
    自定义Realm继承AuthorizingRealm、重写doGetAuthorizationInfo方法

过滤
允许用户访问自己有权限的资源

/* anon:无需认证就可以访问 authc:必须认证了才能访问 user:必须拥有 记住我 功能才能用 perms:拥有对某个资源的权限才能访问 role:拥有某个角色权限才能访问 */
Map<String,String> filterMap = new LinkedHashMap<>();
filterMap.put("/user/add","authc");
bean.setFilterChainDefinitionMap(filterMap);
  1. HelloWord
    Spring Secutiry-都有
//获得 当前用户
Subject currentUser = securityUtils.getSubject();
//用户获得session
Session session = currentUser.getSession();
//判断用户是否被认证
currentUser.isAuthenticated()
//判断用户是否拥有这个角色
currentUser.hasRole()
//粗粒度
currentUser.isPermitted()
//注销
currentUser.logout();

401 未授权

相关文章