精华内容
参与话题
问答
  • Linux 操作系统基础教程 清华大学信息学院计算机系 目 录 前言..........................................................................................................................................
  • 登录官网Jmeter下载,得到压缩包jmeter-5.0.tgz,下载地址:http://jmeter.apache.org/download_jmeter.cgi。 二、安装 将下载得到的压缩包解压即可,这里 解压到自己电脑的路径为E:\software\apache-jmeter-5.5...

    一、下载Jmeter

    登录官网Jmeter下载,得到压缩包jmeter-5.0.tgz,下载地址:http://jmeter.apache.org/download_jmeter.cgi。

    在这里插入图片描述

    二、安装

    将下载得到的压缩包解压即可,这里 解压到自己电脑的路径为 E:\software\apache-jmeter-5.5

    三、运行

    点击bin目录下的jmeter.bat即可启动Jmeter。

    启动后可以看到下面的页面:

    四、做一个简单的压测实例

    现有一个http请求接口http://127.0.0.1:8080/tzxm/jsp/tzxm/dataMonitoring/totalDataMonitoring.jsp,要使用Jmeter对其进行压测,测试步骤如下:

    a.新建一个线程组

     b. 设置线程组参数。这里配置为:200个线程,同时启动,循环一次。

    c. 新增http请求默认值。 在上一步创建的线程组上,新增http请求默认值,所有的请求都会使用设置的默认值,这设置协议为http,IP为127.0.0.1,端口为8080

    d. 添加要压测的http请求。协议、IP、端口不需要设置,会使用步骤c中设置的默认值,只需设置请求路径Path即可

     

     

    e. 新增监听器,用于查看压测结果。这里添加三种:察看结果树、聚合报告、图形结果、用表格查看结果,区别在于结果展现形式不同。

    f. 点击运行按钮开始压测,并查看结果。

    五、如何查看系统负载何性能瓶颈

    服务器上执行以下命令:

    1 top

    以上就完成了Jmeter的简单使用。

    转载于:https://www.cnblogs.com/lmyupupblogs/p/11316302.html

    展开全文
  • Apache Shiro 是 Java 的一个安全框架。功能强大,使用简单的Java安全框架,它为开发人员提供一个直观而全面的认证,授权,加密及会话管理的解决方案。 二、介绍 2.1 功能特点 Shiro 包含 10 个内容,如下图: ...

    一、前言

    Apache Shiro 是 Java 的一个安全框架。功能强大,使用简单的Java安全框架,它为开发人员提供一个直观而全面的认证,授权,加密及会话管理的解决方案。

    二、介绍

    2.1 功能特点

    Shiro 包含 10 个内容,如下图:


    1) Authentication:身份认证/登录,验证用户是不是拥有相应的身份。

    2) Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个权限;即判断用户是否能做事情,常见的如:验证某个用户是否拥有某个角色。或者细粒度的验证某个用户对某个资源是否具有某个权限。

    3) Session Manager:会话管理,即用户登录后就是一次会话,在没有退出之前,它的所有信息都在会话中;会话可以是普通 JavaSE 环境的,也可以是如 Web 环境的。

    4) Cryptography:加密,保护数据的安全性,如密码加密存储到数据库,而不是明文存储。

    5) Web Support:Web支持,可以非常容易的集成到 web 环境。

    6) Caching:缓存,比如用户登录后,其用户信息、拥有的角色/权限不必每次去查,这样可以提高效率。

    7) Concurrency:shiro 支持多线程应用的并发验证,即如在一个线程中开启另一个线程,能把权限自动传播过去。

    8) Testing:提供测试支持。

    9) Run As:允许一个用户假装为另一个用户(如果他们允许)的身份进行访问。

    10) Remember Me:记住我,这个是非常常见的功能,即一次登录后,下次再来的话不用登录了。

     

    2.2 运行原理

    Shiro 运行原理图1(应用程序角度)如下:


    1) Subject:主体,代表了当前“用户”。这个用户不一定是一个具体的人,与当前应用交互的任何东西都是 Subject,如网络爬虫,机器人等。所有 Subject 都绑定到 SecurityManager,与 Subject 的所有交互都会委托给 SecurityManager。我们可以把 Subject 认为是一个门面,SecurityManager 才是实际的执行者。

    2) SecurityManager:安全管理器。即所有与安全有关的操作都会与 SecurityManager 交互,且它管理着所有 Subject。可以看出它是 Shiro 的核心,它负责与后边介绍的其他组件进行交互,如果学习过 SpringMVC,我们可以把它看成 DispatcherServlet 前端控制器。

    3) Realm:域。Shiro 从 Realm 获取安全数据(如用户、角色、权限),就是说 SecurityManager 要验证用户身份,那么它需要从 Realm 获取相应的用户进行比较以确定用户身份是否合法,也需要从 Realm 得到用户相应的角色/权限进行验证用户是否能进行操作。我们可以把 Realm 看成 DataSource,即安全数据源。

    Shiro 运行原理图2(Shiro 内部架构角度)如下:


    1) Subject:主体,可以看到主体可以是任何与应用交互的“用户”。

    2) SecurityManager:相当于 SpringMVC 中的 DispatcherServlet 或者 Struts2 中的 FilterDispatcher。它是 Shiro 的核心,所有具体的交互都通过 SecurityManager 进行控制。它管理着所有 Subject、且负责进行认证和授权、及会话、缓存的管理。

    3) Authenticator:认证器,负责主体认证的,这是一个扩展点,如果用户觉得 Shiro 默认的不好,我们可以自定义实现。其需要认证策略(Authentication Strategy),即什么情况下算用户认证通过了。

    4) Authrizer:授权器,或者访问控制器。它用来决定主体是否有权限进行相应的操作,即控制着用户能访问应用中的哪些功能。

    5) Realm:可以有1个或多个 Realm,可以认为是安全实体数据源,即用于获取安全实体的。它可以是 JDBC 实现,也可以是 LDAP 实现,或者内存实现等。

    6) SessionManager:如果写过 Servlet 就应该知道 Session 的概念,Session 需要有人去管理它的生命周期,这个组件就是 SessionManager。而 Shiro 并不仅仅可以用在 Web 环境,也可以用在如普通的 JavaSE 环境。

    7) SessionDAO:DAO 大家都用过,数据访问对象,用于会话的 CRUD。我们可以自定义 SessionDAO 的实现,控制 session 存储的位置。如通过 JDBC 写到数据库或通过 jedis 写入 redis 中。另外 SessionDAO 中可以使用 Cache 进行缓存,以提高性能。

    8) CacheManager:缓存管理器。它来管理如用户、角色、权限等的缓存的。因为这些数据基本上很少去改变,放到缓存中后可以提高访问的性能。

    9) Cryptography:密码模块,Shiro 提高了一些常见的加密组件用于如密码加密/解密的。

     

    2.3 过滤器

    当 Shiro 被运用到 web 项目时,Shiro 会自动创建一些默认的过滤器对客户端请求进行过滤。以下是 Shiro 提供的过滤器:

    过滤器简称 对应的 Java 类
    anon org.apache.shiro.web.filter.authc.AnonymousFilter
    authc org.apache.shiro.web.filter.authc.FormAuthenticationFilter
    authcBasic org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilter
    perms org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilter
    port org.apache.shiro.web.filter.authz.PortFilter
    rest org.apache.shiro.web.filter.authz.HttpMethodPermissionFilter
    roles org.apache.shiro.web.filter.authz.RolesAuthorizationFilter
    ssl org.apache.shiro.web.filter.authz.SslFilter
    user org.apache.shiro.web.filter.authc.UserFilter
    logout org.apache.shiro.web.filter.authc.LogoutFilter
    noSessionCreation org.apache.shiro.web.filter.session.NoSessionCreationFilter

    解释:

    /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 是授权过滤器。

     

    三、基础入门

    3.1 添加依赖(MAVEN配置)

    
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.1.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
        <version>1.4.0</version>
    </dependency>

    3.2 配置文件

    在 src/main/resources 目录下创建名为 shiro.ini 的配置文件,内容如下:

    [users]
    # admin=admin 分别表示账号和密码,administrator表示逗号前边的账号拥有administrator这个角色。admin=admin,administrator
    zhangsan=zhangsan,manager
    lisi=lisi,guest
    
    [roles]
    # administrator 表示角色名称,* 表示这个角色拥有所有权限
    administrator=*
    manager=user:*,department:*
    guest=user:query,department:query

    其中,每个用户可以拥有多个角色,通过逗号分隔。每个角色可以拥有多个权限,同样通过逗号分隔。

    3.3 编码

    public class ShiroTest {
    @Test
    public void test() {
    // 读取 shiro.ini 文件内容
    Factory<SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini");
    SecurityManager securityManager = factory.getInstance();
    SecurityUtils.setSecurityManager(securityManager);
    Subject currentUser = SecurityUtils.getSubject();
    Session session = currentUser.getSession();
    session.setAttribute("someKey", "aValue");
    String value = (String) session.getAttribute("someKey");
    if (value.equals("aValue")) {
    System.out.println("someKey 的值:" + value);
    }
    // 登陆
    UsernamePasswordToken token = new UsernamePasswordToken("zhangsan", "zhangsan");
    token.setRememberMe(true);
    try {
    currentUser.login(token);
    } catch (UnknownAccountException uae) {
    System.out.println("用户名不存在:" + token.getPrincipal());
    } catch (IncorrectCredentialsException ice) {
    System.out.println("账户密码 " + token.getPrincipal() + " 不正确!");
    } catch (LockedAccountException lae) {
    System.out.println("用户名 " + token.getPrincipal() + " 被锁定 !");
    }
    // 认证成功后
    if (currentUser.isAuthenticated()) {
    System.out.println("用户 " + currentUser.getPrincipal() + " 登陆成功!");
    //测试角色
    System.out.println("是否拥有 manager 角色:" + currentUser.hasRole("manager"));
    //测试权限
    System.out.println("是否拥有 user:create 权限" + currentUser.isPermitted("user:create"));
    //退出
    currentUser.logout();
    }
    }
    }

    打印结果:

    someKey 的值:aValue
    用户 zhangsan 登陆成功!
    是否拥有 manager 角色:true
    是否拥有 user:create 权限true

    在项目的后端代码中,我们可以通过 Subject 对象检测出当前登录用户的认证状态和授权信息,以下是 Subject 对象认证和授权相关的方法列表:


    如果开发者不想使用代码进行用户进行授权校验等操作,那么可以使用注解代替。

    在使用 Shiro 的注解之前,请确保项目中已经添加支持 AOP 功能的相关 jar 包。常用注解如下:

    @RequiresRoles( "manager" ) # 角色校验
    public String save() {
    //...
    }
    @RequiresPermissions("user:manage") # 权限检验
    public String delete() {
    //...
    }

    当客户端发送请求后,系统会使用 AOP 生成请求目标的代理类来解析注解,然后判断当前请求的用户是否拥有权限访问。

    在项目的前端代码中,如果使用的是 JSP 模板,我们就可以使用 Shiro 提供的标签对页面元素的展示进行控制。

    例如:

    <%@ taglib prefix="shiro" uri=http://shiro.apache.org/tags %>
    <html>
    <body>
    <shiro:hasPermission name="user:manage">
    <a href="manageUsers.jsp">
    点击进入管理界面
    </a>
    </shiro:hasPermission>
    <shiro:lacksPermission name="user:manage">
    没有管理权限
    </shiro:lacksPermission>
    </body>
    </html>

    其中,user:manage 对应 shiro.ini 文件中[roles]下边的设置。

     

    四、自定义 Realm

    边的程序使用的是 Shiro 自带的 IniRealm,而 IniRealm 从 ini 配置文件中读取用户的信息,大部分情况下需要从系统的数据库中读取用户信息,所以需要自定义 realm。

    Shiro 为我们提供了如下 Realm:


    其中,最基础的是 Realm 接口,CachingRealm 负责缓存处理,AuthenticationRealm 负责认证,AuthorizingRealm负责授权,通常自定义的 realm 继承 AuthorizingRealm。

    自定义 Realm:

    public class CustomRealm extends AuthorizingRealm {
    /**
    * 认证
    */
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
    // 从 token 中获取用户身份信息
    String username = (String) token.getPrincipal();
    // 通过 username 从数据库中查询
    // 如果查询不到则返回 null
    if(!username.equals("zhangsan")){//这里模拟查询不到
    return null;
    }
    //获取从数据库查询出来的用户密码
    String dbPassword = "zhangsan";//这里使用静态数据模拟
    //返回认证信息由父类 AuthenticatingRealm 进行认证
    SimpleAuthenticationInfo simpleAuthenticationInfo = new SimpleAuthenticationInfo(username, dbPassword, getName());
    return simpleAuthenticationInfo;
    }
    /**
    * 授权
    */
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
    // 获取身份信息
    String username = (String) principals.getPrimaryPrincipal();
    // 根据身份信息从数据库中查询权限数据
    // 这里使用静态数据模拟
    List<String> permissions = new ArrayList<String>();
    permissions.add("user:*");
    permissions.add("department:*");
    // 将权限信息封闭为AuthorizationInfo
    SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo();
    // 模拟数据,添加 manager 角色
    simpleAuthorizationInfo.addRole("manager");
    for(String permission:permissions){
    simpleAuthorizationInfo.addStringPermission(permission);
    }
    return simpleAuthorizationInfo;
    }
    }

    在 src/main/resources 目录下创建 shiro-realm.ini 文件,内容如下:

    
    [main]
    #自定义 realm
    customRealm=com.light.shiroTest.realm.CustomRealm
    #将realm设置到securityManager
    securityManager.realms=$customRealm

    将测试类中,shiro.ini 改成 shiro-realm.ini 后执行,结果如下:

    
    someKey 的值:aValue
    用户 zhangsan 登陆成功!
    是否拥有 manager 角色:true
    是否拥有 user:create 权限true

     

    五、与 Spring 整合

    由于项目设计思路不同,整合 Shiro 框架时的设置也会有所不同,因此下边只列出部分通用的代码。

    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-core</artifactId>
        <version>1.4.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.shiro</groupId>
        <artifactId>shiro-spring</artifactId>
        <version>1.4.0</version>
    </dependency>

    5.2 配置文件

    web.xml :

    
    <filter>
    <filter-name>shiroFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    <init-param>
    <param-name>targetFilterLifecycle</param-name>
    <param-value>true</param-value>
    </init-param>
    </filter>
    <filter-mapping>
    <filter-name>shiroFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>

    application-shiro.xml:

    <bean id="shiroFilter" class="org.apache.shiro.spring.web.ShiroFilterFactoryBean">
    <!-- 必须设置 -->
    <property name="securityManager" ref="securityManager"/>
    <!-- 3 个 url 属性为可选设置 -->
    <property name="loginUrl" value="/login.jsp"/>
    <property name="successUrl" value="/home.jsp"/>
    <property name="unauthorizedUrl" value="/unauthorized.jsp"/>
    <property name="filterChainDefinitions">
    <value>
    <!-- 对静态资源设置匿名访问 -->
    /resources/** = anon
    /login = anon
    <!-- /** = authc 所有url都必须认证通过才可以访问-->
    /** = authc
    </value>
    </property>
    </bean>
    <!-- 安全管理器 -->
    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">
    <property name="realm" ref="customRealm" />
    </bean>
    <!-- 自定义 realm -->
    <bean id="customRealm" class="com.light.ac.web.realm.CustomRealm"></bean>
    <!-- 保证实现了Shiro内部lifecycle函数的bean执行 -->
    <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor" />
    

    其中,application-shiro.xml 中的 shiroFilter 名字和 web.xml 文件中的 shiroFilter是对应的,必须一致。

    anon 和 authc 对应上文提到的过滤器。

    CustomRealm 类:

    public class CustomRealm extends AuthorizingRealm {
    @Autowired
    private UserService userService;
    @Autowired
    private PermissionService permissionService;
    /**
    * 认证
    */
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
    // 获取用户名
    String userName = (String) token.getPrincipal();
    // 通过用户名获取用户对象
    User user = this.userService.findUserByUserName(userName);
    if (user == null) {
    return null;
    }
    // 通过 userId 获取该用户拥有的所有权限,返回值根据自己需求编写,并非固定值。
    Map<String,List<Permission>> permissionMap = this.permissionService.getPermissionMapByUserId(user.getId());
    // (目录+菜单,分层级,用于前端 jsp 遍历)
    user.setMenuList(permissionMap.get("menuList"));
    // (目录+菜单+按钮,用于后端权限判断)
    user.setPermissionList(permissionMap.get("permissionList"));
    SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(user,user.getPassword(),this.getName());
    return info;
    }
    /**
    * 授权
    */
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
    User user = (User) principals.getPrimaryPrincipal();
    SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();
    // (目录+菜单+按钮,用于后端权限判断)
    List<Permission> permissionList = user.getPermissionList();
    for (Permission permission : permissionList) {
    if (StringUtil.isNotEmpty(permission.getCode())) {
    info.addStringPermission(permission.getCode());
    }
    }
    return info;
    }
    }

    具体代码可以根据下文提供的源码地址进行下载查看。

    六、源码下载

    authority-control-shiro

    七、参考资料

    文章来源:https://blog.csdn.net/harwey_it/article/details/80540758

     

    其他资料

    SpringMVC整合Shiro

    详解spring整合shiro权限管理与数据库设计

    SSM框架整合Shiro简单版

    shiro和web项目整合,实现类似真实项目的应用

    springmvc+shiro+maven 实现登录认证与权限授权管理

     

     

     

     

    展开全文
  • 现在确认能否不输入口令就用 ssh 登录 localhost: $ ssh localhost1如果不输入口令就无法用 ssh 登陆 localhost,执行下面的命令: $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa$ cat ~/.ssh/id_rsa.pub >> ~/...

    免密码 ssh 设置

    现在确认能否不输入口令就用 ssh 登录 localhost:

    $ ssh localhost
    1
    如果不输入口令就无法用 ssh 登陆 localhost,执行下面的命令:

    $ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    $ chmod 0600 ~/.ssh/authorized_keys
    1
    2
    3
    执行

    下面演示本地运行一个 MapReduce 的 job,以下是运行步骤。

    (1)格式化一个新的分布式文件系统:

    $ bin/hdfs namenode -format
    1
    (2)启动 NameNode 守护进程和 DataNode 守护进程:

    $ sbin/start-dfs.sh
    1
    Hadoop 守护进程的日志写入到 $HADOOP_LOG_DIR目录(默认是 $HADOOP_HOME/logs)

    (3)浏览 NameNode 的网络接口,它们的地址默认为:

    NameNode - http://localhost:50070/
    1
    (4)创建 HDFS 目录来执行 MapReduce 的 job:

    $ bin/hdfs dfs -mkdir /user
    $ bin/hdfs dfs -mkdir /user/<username>
    1
    2
    (5)将输入文件拷贝到分布式文件系统:

    $ bin/hdfs dfs -put etc/hadoop input
    1
    (6)运行发行版提供的示例程序:

    $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+'
    1
    (7)查看输出文件

    将输出文件从分布式文件系统拷贝到本地文件系统查看:

    $ bin/hdfs dfs -get output output
    $ cat output/*****
    1
    2
    或者,在分布式文件系统上查看输出文件:

    $ bin/hdfs dfs -cat output/*
    1
    (8)完成全部操作后,停止守护进程:

    $ sbin/stop-dfs.sh
    **需要学习的可以继续看下一章。**

    很多人都知道我有大数据培训资料,都天真的以为我有全套的大数据开发、hadoop、spark等视频学习资料。我想说你们是对的,我的确有大数据开发、hadoop、spark的全套视频资料。
    如果你对大数据开发感兴趣可以加口群领取免费学习资料: 763835121

    转载于:https://blog.51cto.com/11275216/2114826

    展开全文
  • 比如,你可能会说“如果是已经登录的用户与我的软件交互,那么我给他就显示一个按钮,让他点击后可以查看自己的账户信息。如果用户没有登录,那么我就显示一个注册按钮”。 这个例子说明了我们软件中很多代码都是...

    Shiro的设计目标是简化应用的安全管理工作。软件通常是以用户为基础设计的。也就是说,我们经常是根据用户是怎样和我们的软件交互的来设计相关的用户接口。比如,你可能会说“如果是已经登录的用户与我的软件交互,那么我给他就显示一个按钮,让他点击后可以查看自己的账户信息。如果用户没有登录,那么我就显示一个注册按钮”。

    这个例子说明了我们软件中很多代码都是为了满足用户需求而写。即使“用户”有时候压根就不是一个人(比如说另一个软件系统)。

    Shiro的设计反映了这些思想,这样使得开发者更加容易理解Shiro中的一些概念,也使得Shiro更加易用。

    一、概览Shiro结构

    从高层次来看,Shiro的结构中有三个主要的概念:Subject、SecurityManager和Realms。下图展示了这些组件是如何交互的:

    • Subject:指当前正在执行程序的“用户”。Subject含义更广,因为用户通常是指人,而Subject可以指人、进程、计划任务、守护进程等。准确的说,Subject指的是“当前和软件交互的事物”。在多数场景中,你可以将Subject粗暴地认为是用户。
      Subject对象都会和一个SecurityManager对象绑定。当你和一个Subject交互时,这些交互行为会被相应的SecurityManager翻译为subject-specific的行为。
    • SecurityManager:SecurityManager是Shiro结构中的核心。它用来协调其内部的各种安全组件。然而,一旦SecurityManager和其内部的安全组件配置完成后,程序员就不再会用到它了,这时候程序员通常是与Subject的API打交道。
      我们将在后序教程中详细介绍SecurityManager。但是在此之前,要知道当我们与Subject交互时,实际上是SecurityManager在幕后帮我们完成了那些操作,从上面的图中也可以看出这一点。
    • Realms:Realms就像一个桥或连接器,将Shiro和你的应用安全数据连接起来。当我们用安全相关的数据交互时,比如用户账户的身份验证(登录)和授权管理,Shiro会从一个或多个配置好的Realms中寻找相关数据。
      从这个角度来说,Realms实际上是一个DAO:将连接到数据源的细节封装到内部,并且使Shiro可以轻易地读取相关的数据。当我们配置Shiro时,必须至少有一个Realms。SecurityManager可以由多个Realms配置,但至少有一个Realms配置。
      Shiro提供了多种Realms去连接数据源,如LDAP,数据库(JDBC),文本配置文件(如INI)。
      和其他内部组件一样,SecurityManager管理Realms如何获取安全数据和认证数据去配置Subject。

    二、详细结构

    下图展示了Shiro的详细结构:

    • Subject:如上文所述。
    • SecurityManager:如上文所述。
    • Authenticator(认证器):Authenticator是一个负责执行用户登录并对此做出相应动作的内部组件。当用户尝试登录时,逻辑上是Authenticator在执行这个动作。Authenticator知道如何协调一个或多个存储了用户/账户信息的Realms。从Realms获取的信息被用了认证用户身份。
      Authentication Strategy是指当有多个Realms时,如果一个Realms登录成功了,然而其他的Realms登录失败了,那么本次登录是成功的还是失败的?这由Authentication Stratege决定。
    • Authorizer(核准器):Authorizer是一个负责权限控制的组件。和Authenticator类似,Authorizer知道如何协调一个或多个存储了角色和许可的数据源。Authorizer用这些信息决定用户是否允许做某一动作。
    • SessionManager(会话管理):SessionManager知道如何创建并管理一个用户Session。这个特性是其他安全管理框架所不具有的。无论任何环境,Shiro都可以在本地管理Session,即使没有web/servlet或EJB容器。SessionDAO可以管理使用何种数据源去实现Session。
    • CacheManager(缓存管理):CacheManager创建并管理Cache对象的生命周期。因为Shiro要访问很多底层的数据源进行身份认证、权限管理和Session管理的操作,所以缓存处于最底层用以提高性能。任何开源的缓存框架都可以集成到Shiro中。
    • Cryptography (加密):Shiro的crypro包包含了很多易用的加密算法。
    • Realms:如前文所述。

    三、The SecurityManager

     

    因为Shior鼓励程序员以Subject为中心开发应用,所以程序员几乎不会和SecurityManager打交道。即便如此,深入地了解一下SecurityManager还是很有必要的。

    如前文所述,SecurityManager处理安全操作、管理所有用户的状态,在Shiro默认的SecurityManager中包括下述功能:

    • Authentication
    • Authoriztion
    • Session Managerment
    • Cache Managerment
    • Realm coordination
    • Event propagation(事件传播)
    • “记住我”服务
    • 创建Subject
    • 登出等

    为了简化配置并且增强拓展性,Shiro的所有设计都是非常模块化的。如前面详细结构中所叙述的,Shiro将这些复杂的工作设计成了一个又一个模块,而并非完全由SecurityManager完成。

    SecurityManager还兼容了JavaBeans,这就允许你通过JavaBeans的accessor/mutator(get/set)自定义这些组件,用JavaBeans风格的配置(如Spring、Guice、JBoss)去配置SecurityManager将会非常简单。我们将在后续教程中做详细介绍。

    转载于:https://www.cnblogs.com/hf-z/p/6021879.html

    展开全文
  • 1.开始说明本文Ubuntu 16.04下搭建Web服务器(MySQL+PHP+Apache)的内容很...切换管理员身份在ubuntu中需要用root身份进行操作,所以用下面的命令确保以root身份登录:sudo su3.开始安装mysapt-get install mysql-server m
  • 1.开始说明 下面很多可能参照网上其中以为前辈的,但有所...在ubuntu中需要用root身份进行操作,所以用下面的命令确保以root身份登录: sudo su 3.开始安装mysql5 apt-get install mysql-server mysql-client ...
  • 1.开始说明 下面很多可能参照网上其中以为前辈的,但有所改进吧。这些设置可能会有所不同,你需要根据不同情况进行修改。...在ubuntu中需要用root身份进行操作,所以用下面的命令确保以root身份登录: sudo s
  • 安装apache22.切换管理员身份在ubuntu中需要用root身份进行操作,所以用下面的命令确保以root身份登录:sudo su3.开始安装mysql5apt-get install mysql-server mysql-client你将被要求提供一个mys...
  • 部署linux服务器1.准备工作使用ubuntu16 在使用tar命令与气动tomcat必须使用root账户所以必须开启root账户1.1ubuntu更改rot账户sudo passwd root sudo【ubuntu】 (输入密码... 就实现了root账户登录 1.3想使用xhell远
  • Chef 入门案例(安装Apache)【系列教程二】 实例场景:在chefnode(192.168.0.40)上安装一个Apache服务器,并创建一个主页。Chef基础环境搭建参考 Chef安装教程【系列教程一】 安装 # 登录chefworkstation...
  • Apache Shiro 快速入门教程之(三)添加依赖web.xml配置shiroFilter自定义realm添加spring-shiro.xml配置文件编写登录方法使用Shiro注解授权一、授权方式1.编程式:2.注解式:3.JSP/GSP 标签:二、配置权限注解支持...
  • Apache Shiro 快速入门教程(二)Shiro Web 集成添加依赖web.xml配置shiro过滤器配置shiro.ini文件登录测试 Shiro Web 集成 shiro与web集成,主要是通过配置一个ShiroFilter 拦截所有url,其中ShiroFilter 类似于如 ...
  • Apache Shiro 快速入门教程之 与SpringBoot项目整合(四)一、Shiro与SpringBoot整合1.添加环境依赖2.自定义realm3.编写登录方法4.Shiro配置5.Shiro授权Shiro会话管理什么是shiro的会话管理?添加依赖在springboot...
  • 第1步、登录腾讯云申请SSL证书并下载,这里省略申请的步骤。 第2步、解压证书文件,打开Apache文件夹,里面有三个文件,如下: 1_root_bundle.crt // 公钥 2_www.cpw535.com.crt // 根证书 3_...
  • 目录 一,前言 1.1 集群规划 1.2 前置条件 1.3 安装包下载 二,安装部署 2.1,解压和修改配置文件 2.2 复制文件到另外2台机器 ...需要已经配置免密登录的三台CentOS7服务器: IP地址 hosts 节点身...
  • 【环境说明】: 本文演示过程在同一个机器上的,环境... apache-tomcat-7.0.57-windows-x64 cas-server-webapp-4.0.0.war、cas-client-core-3.2.1.jar、commons-logging.jar 确保本地jdk环境已经搭建好 ...
  • SSO之CAS单点登录详细搭建教程

    千次阅读 2017-08-02 14:37:49
    教程是我个人编写,花费几个小时的时间,给需要学习的人员学习使用,希望能帮助到你们。   【环境说明】: 本文演示过程在同一个机器上的(也可以在三台实体机器或者三个的虚拟机上),环境如下: ...
  • 【环境说明】: 本文演示过程在同一个机器上的,环境...apache-tomcat-7.0.57-windows-x64 cas-server-webapp-4.0.0.war、cas-client-core-3.2.1.jar、commons-logging.jar 确保本地jdk环境已经搭建好

空空如也

1 2 3 4 5 ... 12
收藏数 221
精华内容 88
关键字:

登录apache教程