10个基于java的cms网站内容管理系统(javaweb项目的系统权限管理设计方法有两种:方法)
优采云 发布时间: 2022-04-06 12:1810个基于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 可以简单总结一下作为一个用户查看和管理其信息数据的存储位置