10个基于java的cms网站内容管理系统(javaweb项目的系统权限管理设计方法有两种:方法)

优采云 发布时间: 2022-04-06 12:18

  10个基于java的cms网站内容管理系统(javaweb项目的系统权限管理设计方法有两种:方法)

  java web项目的系统权限管理设计有两种方式:

  方法一、SpringMVC集成Shiro(Shiro是一个强大的权限管理框架)

  方法二、基于角色的访问控制

  基于角色的访问控制

  首先基于角色的访问控制,所有用户访问都会被过滤,然后分析访问进行认证!权限的重点,表的设计。

  一般是三个表,表名是自定义的。用户表(User)、角色表(Role)、资源表(Resource)

  基于角色设计权限是一种可行的方式。用户和资源之间没有强耦合,处理起来很方便。但是,直接处理这个是很麻烦的。很多情况下,我们想用框架来简化我们的操作,所以作者想一下子了解Shiro,一下子学完。以上两种方法百度知道!​​​​

  Shiro 可以轻松开发出足够好的应用程序,不仅可以在 JavaSE 环境中使用,还可以在 JavaEE 环境中使用。Shiro 可以帮助我们:身份验证、授权、加密、会话管理、与 web 的集成、缓存等。这不是我们想要的,而且 Shiro 的 API 也很简单;

  

  ​Authentication​:认证/登录,验证用户是否有对应的身份;

  ​Authorization​:授权,即权限验证,验证经过认证的用户是否具有一定的权限;也就是判断用户是否可以做一些事情,比如:验证用户是否具有一定的角色。或者细粒度的验证用户是否对某个资源有一定的权限;访问控制的过程,即确定“谁”访问“什么”。

  ​会话管理器​:管理特定于用户的会话,即使在非 Web 或 EJB 应用程序中也是如此

  ​密码学​:加密以保护数据的安全,例如密码被加密并存储在数据库中而不是明文;

  ​Web Support​:Web支持,可轻松集成到Web环境中;

  ​缓存​:缓存是 Apache Shiro API 中的一级公民,以确保安全操作保持快速和高效。

  ​并发​:Apache Shiro 支持多线程应用程序的并发特性。

  ​测试​:提供测试支持;

  ​运行方式​:允许用户假设另一个用户的身份(如果允许的话)的功能,有时在管理场景中很有用。

  ​记住我​:记住用户在会话中的身份,因此他们只需要在强制时登录。

  Shiro 不会维护用户和权限;这些需要我们自己设计/提供;然后通过相应的接口注入Shiro。

  ​​​​

  ​​​​

  ​​​​

  ​Shiro 的主要结构高级概述:​

  在最高概念层面,Shiro 的架构有 3 个主要概念:​Subject、SecurityManager 和 Realms​

  

  ​主题:​:虽然“用户”这个词通常意味着一个人,一个可以是一个人,但它也可以代表一个 3rd-party 服务*、守护进程帐户、cron 作业或任何类似的东西 - 基本上是当前的任何东西与软件交互。无论如何,它就像呈现的视图。所有 Subjects 都绑定到 SecurityManager,所有与 Subject 的交互都将委托给 SecurityManager;主体可以看作是一个门面;SecurityManager 是实际的执行者;

  ​SecurityManager:​:安全管理器;即所有与安全相关的操作都会与SecurityManager进行交互;

  它管理所有主题;可以看出它是Shiro的核心,负责与后面介绍的其他组件交互

  交互,如果你学过SpringMVC,你可以把它想象成一个DispatcherServlet前端控制器。

  ​Realm:​Domain,Shiro从Realm获取安全数据(如用户、角色、权限),也就是说SecurityManager要验证用户身份,需要从Realm获取对应的用户进行比对,判断是否用户的身份是合法的。还需要从Realm获取用户对应的角色权限,验证用户是否可以操作;Realm可以看成是一个DataSource,也就是一个安全的数据源。配置 Shiro 时,您必须指定至少一个 ​Realm​ 用于身份验证和/或授权。SecurityManager 可以配置多个 Realm,但至少需要一个。

  Shiro 提供开箱即用的领域来连接到许多安全数据源(也称为目录),例如 LDAP、关系数据库 (JDBC)、INI 和属性文件等文本配置源等。如果默认领域不能满足您的需求,您可以插入您自己的领域实现来表示自定义数据源。(配置数据源可以是各种类型,JDBC或文本数据源)

  ​详细架构:​

  

  ​主题​实例都绑定到(并且需要)SecurityManager。当您与 Subject 交互时,这些交互将转换为与 SecurityManager 的特定于主题的交互。(当我们与 互动时)

  ​安全经理​;它管理所有的Subject,并负责认证和授权,以及会话和缓存管理。

  ​Authenticator​:Authenticator,负责主体认证,这是一个扩展点,如果用户认为Shiro默认不好,可以自定义实现;它需要一个Authentication Strategy,即在什么情况下用户认证通过了;

  ​Authrizer​:授权者,或访问控制器,用于确定主体是否有权执行相应的操作;也就是说,它控制用户可以在应用程序中访问哪些功能;

  ​SessionManager​ Shiro 抽象出一个自己的 Session 来管理主体和应用程序之间的数据交互;在这种情况下,例如,当我们在Web环境中使用它时,它首先是一个Web服务器;那么它是一个 EJB 服务器;这时候如果想把两台服务器的session数据放在一个地方,此时可以实现自己的分布式session(比如把数据放到Memcached服务器,Redis);

  ​SessionDAO​:DAO已经被大家使用过,数据访问对象,会话的CRUD,比如我们想把Session保存到数据库,那么我们可以实现自己的SessionDAO,通过JDBC写入数据库;比如我们想把 Session 放在 Memcached 中,你可以实现自己的 Memcached SessionDAO;另外,可以在SessionDAO中使用Cache进行缓存,提高性能;

  ​CacheManager​:缓存控制器,用于管理用户、角色、权限等缓存;因为这些数据很少被更改,所以放在缓存中后可以提高访问性能。

  根据上面的描述,我有个简单的了解,大家可以去官网好好看看,可以用google的翻译,也可以用别人写的博客,基本有3个概念 Subject SecurityManager Realm 可以简单总结一下作为一个用户查看和管理其信息数据的存储位置

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线