shiro session 设置取不到_SSM整合Shiro实现认证、加密和授权

学习目标

1、shiro介绍

2、SSM整合Shiro

学习内容

1.shiro介绍

1.1介绍

  • shiro是一个java的 安全框架,apache的一个开源框架。简单易用。
  • 实现的功能:认证、授权、会话管理和密码加密等功能。
  • 可以用在java SE环境中,java EE环境中。

1.2shrio功能特点:

0ea3a7d30fc8930e284c22321f5b1cd8.png

Authentication:认证

Authorization:授权

Session Management:session会话管理

Cryptography:密码加密

Caching:缓存

web Support:web支持

Concurrency:多线程、并发

Testing:测试

Run as: 以 某种 身份 运行

Remember Me:记住我

1.3shiro运行原理

6ebb195640e156e8710c560efa322be6.png

可以看到:应用代码直接交互的对象是Subject,也就是说Shiro的对外API核心就是Subject;其每个API的含义:

Subject:主体,抽象的身份:当前的用户,网络爬虫、第三方的程序、进程

SecurityManager:安全管理器,管理所有的subjects;委托给SecurityManager进行安全管理。门面模式:Facade;需求----》委托人————分发下去;

Realm:域,数据域。获取数据库中用户信息、权限信息。

接下来我们来从Shiro内部来看下Shiro的架构,如下图所示:

7e08a6cfed86d48875d2f46f6da65645.png

1.4过滤器

Shiro内置了很多默认的拦截器,比如身份验证、授权等相关的。默认拦截器可以参考org.apache.shiro.web.filter.mgt.DefaultFilter中的枚举拦截器:

解释:

  • /admins/**=anon # 表示该 uri 可以匿名访问
  • /admins/**=auth # 表示该 uri 需要认证才能访问
  • /admins/**=authcBasic # 表示该 uri 需要 httpBasic 认证
  • /admins/*=perms[user:add:] # 表示该 uri 需要认证用户拥有 user:add:* 权限才能访问
  • /admins/**=port[8081] # 表示该 uri 需要使用 8081 端口
  • /admins/=rest[user] # 相当于 /admins/=perms[user:method],其中,method 表示 get、post、delete 等
  • /admins/**=roles[admin] # 表示该 uri 需要认证用户拥有 admin 角色才能访问
  • /admins/**=ssl # 表示该 uri 需要使用 https 协议
  • /admins/**=user # 表示该 uri 需要认证或通过记住我认证才能访问
  • /logout=logout # 表示注销,可以当作固定配置

注意:

  • anon,authcBasic,auchc,user 是认证过滤器。
  • perms,roles,ssl,rest,port 是授权过滤器。

2、shiro的hello world

参考官网的示例

 public static void main(String[] args) { //初始化工厂实例 Factory factory = new IniSecurityManagerFactory("classpath:shiro.ini"); //实例化一个安全管理器 SecurityManager securityManager = factory.getInstance(); //设置安全管理器 SecurityUtils.setSecurityManager(securityManager); //获取Subject:当前用户 Subject currentUser = SecurityUtils.getSubject(); ​ //从session中查询中当前登录的用户信息 ,类似于登录时从session中获取登录信息 Session session = currentUser.getSession(); session.setAttribute("someKey
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值