Shiro | SpringSecurity 学习笔记

SpringSecurity

1.环境配置

过滤器、拦截器…

不是功能性需求

安全在什么时候考虑?设计之初

  • 漏洞,隐私泄露;
  • 架构确定之后

SpringSecurity、shiro:框架,简化配置;(简化过滤器、拦截器…)

认证、授权

  • 功能权限
  • 访问权限
  • 菜单权限

环境配置

Spring2.0.xx(新版本可能会出问题

SpringSecurity依赖

2.用户认证和授权

在这里插入图片描述

导入SpringSecurity依赖

在这里插入图片描述

配置授权

看官网;看源码:父类源码;注解源码;

不同版本有不同的功能

创建一个config包,SpringSecurity相关配置编写在该包的SecurityConfig类中;注解@EnableWebsecurity

这个类继承WebSecurityConfigAdater父类,自定义安全策略

config方法:有三个不同的重写

在这里插入图片描述

链式编程;

需求:首页所有人可以访问,功能页只有对应的人可以访问。

在这里插入图片描述

没有权限,调到登录页:开启登录页

在这里插入图片描述

设置登录页的url

在这里插入图片描述

配置认证

认证获取用户信息的方法:

  • 从内存中;

在这里插入图片描述

需要为密码设置加密方式

  • 从数据库中

在这里插入图片描述

3.注销及权限控制

注销

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

动态显示菜单

themleaf实现

4.记住我及首页定制

开启记住我功能

在这里插入图片描述

本质上是一个cookie,默认保存两周;

在这里插入图片描述

Shiro

1.Shiro快速开始

在这里插入图片描述
查看官方网站:10 Minute Tutorial

1.导入shiro依赖

不想找父依赖/找依赖的版本号:到Maven仓库找依赖 https://mvnrepository.com/

2.导shiro配置文件

3.导入quickstart:HelloWorld

需要注意的地方

  1. 关于日志

    官方只导入了一个日志门面:slf4j;官方默认使用common-logging,但是有时候会报错

在这里插入图片描述

在这里插入图片描述

  1. 关于Quickstart类

    官方的Quickstart类中创建SecurityManager的方法已经失效

    Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
    SecurityManager securityManager = factory.getInstance();
    

    调用下面的方法创建DefaultSecurityManager

    DefaultSecurityManager defaultSecurityManager=new DefaultSecurityManager();
            IniRealm iniRealm=new IniRealm("classpath:shiro.ini");
            defaultSecurityManager.setRealm(iniRealm);
    

2.Shiro的Subject分析

使用简单的ini配置是创建Shiro的SecurityManager最简单的方式。我们通过工厂模式加载一个.ini文件并返回一个SecurityManager实例

DefaultSecurityManager defaultSecurityManager=new DefaultSecurityManager();
IniRealm iniRealm=new IniRealm("classpath:shiro.ini");
defaultSecurityManager.setRealm(iniRealm);

SecurityManager作为JVM单例模式进行访问(其实是一个全局的对象)。大部分应用不会这么作,一般依赖配置文件或者web.xml文件。

SecurityUtils.setSecurityManager(defaultSecurityManager);

获取当前的Subject(也就是当前的用户 user)

Subject currentUser = SecurityUtils.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值