你会觉得sakai的新用户注册功能是很简单的。的确,如果你在官方demo的基础上只需要配置一个tool就好了,但如果没有一些原始数据呢,即如果将demo中默认的realm删除掉,你还能轻松配置这个功能吗?这背后就涉及到sakai的realm策略及其实现。
我理想的权限设计包括这些部分:资源、情景、角色、用户、操作。某个用户在特定情景下,扮演某个角色,去操作某个资源。用编程实现就是:用url表示情景,根据数据库中的记录,可以计算出用户此时的角色,角色则是一个集合,包含了某个资源是否可以被操作的直接信息。
Sakai的权限思路是:资源+操作+用户。
上pp,下面是添加用户时的堆栈情况。
其中unlock是权限检查,决定addUser是否能执行。Unlock在SakaiSecurity.java中。
如上所示,如果是超级用户登录,这个操作被允许;再看有没有暴露给外部的仲裁接口即Advisor;最后再检查授权组的权限,即checkAuthzGroups()函数,在这里,其第四个参数azgs其实就是realm列表,这里是null。
看看第309行,getAuthzGroups,是怎么获得realm的。
跟下去,会跟到BaseUserDirectoryService.java中getEntityAuthzGroups
在1697行和1699行,添加了两个realm,一个是以资源本身的id为realm;另一个根据userId的userType绑定资源的realm,如下代码。
所以,realm就找好了。下面是
isAllowed(String userId, String lock, Collection<String> realms) 在DbAuthzGroupService.java中。然后就在数据库中寻找相应realm对应的权限,下面是sql语句:
select count(1) from sakai_realm_rl_fn,sakai_realm force index (ak_sakai_realm_id) where sakai_realm_rl_fn.realm_key = sakai_realm.realm_key and sakai_realm.realm_id in (x'2f757365722f31646466626235392d633734342d346462652d383533332d383334343634636661363433',x'21757365722e74656d706c617465') and function_key in (select function_key from sakai_realm_function where function_name = x'757365722e616464') and (role_key in (select role_key from sakai_realm_rl_gr where active = '1' and user_id = null and realm_key in (select realm_key from sakai_realm where sakai_realm.realm_id in (x'2f757365722f31646466626235392d633734342d346462652d383533332d383334343634636661363433',x'21757365722e74656d706c617465'))) or role_key in (select role_key from sakai_realm_role where role_name = '.anon') )
总结:
1、要使用注册用户功能,必须构造名称为!user.template的realm,并赋予.anon角色user.add的权限。
2、对资源的控制,都在!user.template中(用户信息也是一种资源)。
- 大小: 15 KB
- 大小: 19.1 KB
- 大小: 11.9 KB
- 大小: 11.8 KB
- 大小: 16.9 KB
分享到:
相关推荐
用户注册功能在 Sakai 中是一项基本且重要的功能。虽然表面上看起来非常简单,但深入分析其背后的实现过程会发现其实相当复杂。以下是对该业务流程的主要步骤进行梳理: 1. **用户注册页面**:位于 `/user/user-...
为了更好地理解Sakai中的权限管理机制,本篇文章将深入探讨其权限设计的核心理念、具体实现方式及其应用场景。 #### 二、Sakai权限设计概述 Sakai中的权限设计主要围绕着“角色”这一概念展开。每一个角色都与一组...
Sakai 是由高校、商业组织和个人开发者组成的社区,致力于开发一个通用的协作学习环境...Sakai OAE (Open Academic Environment)是一个目前正在开发中的新版本,继承了CLE中的内容和经验,致力于全新的用户体验。
这种设计使得Sakai具有高度的可扩展性和灵活性,用户可以根据需要选择并组合功能。 在"Sakai-src"中,开发者可以找到以下几个关键部分: 1. **项目结构**:Sakai的源代码按照模块进行组织,如"kernel"、"portal"、...
- **功能特点**:Sakai不仅为教师、研究人员和学生提供了一套强大的软件工具,还允许用户通过浏览器访问这些工具,并创建个性化的站点(Site)来满足不同的需求。例如,项目管理者可以通过Sakai创建站点来发布通知和...
sakai是广泛应用于高校的开源课程管理系统,具有良好的架构设计,具有很好的解耦行、扩展性和稳定性。目前sakai的二次开发广泛流行于企业、高校和个人,希望有兴趣我们可以共同交流。欢迎交流!
1. 组件管理:Sakai内核采用组件化设计,组件管理是其核心功能之一。"Component Manager Candidates - Sakai Kernel Google Groups.htm"和"component-manager-candidates.htm"文件可能详细介绍了组件候选人的选择和...
在Sakai这个开源教育平台中,样式修改是提升用户界面体验的重要环节。要修改Sakai的样式,首先需要了解CSS(Cascading Style Sheets)的作用,它负责定义网页的布局和外观。以下是详细步骤: 1. **查找当前页面CSS*...
3. **注释和示例**:API 文档通常包含类和方法的详细注释,解释其设计目的和使用场景。可能还会提供示例代码,展示如何在实际项目中应用这些API。 4. **包结构**:显示 Sakai 的模块化结构,包括各个包的功能和它们...
2004年,SAKAI发布了第一个稳定版本,随后的几年里,它经历了多个版本迭代,不断改进用户体验,增强功能,并扩大了其在全球的影响力。2006年的文档《SAKAI架构2006-07架构历史v02》详细记录了SAKAI架构的早期发展...
这里我们创建了一个名为`sakai`的数据库,并赋予用户`edu1`所有权限,允许从任何主机连接,密码为`123456`。 3. 安装BigBlueButton (BBB) BBB是一个开源的在线协作和会议系统,有时与Sakai一起使用。参照BBB的...
随着教育技术的不断进步,Sakai也在持续进化,未来将更加注重用户体验的提升、智能化功能的集成以及生态系统的完善。同时,跨平台的兼容性、移动设备的支持以及数据分析能力的增强也将成为Sakai发展的重要方向,以更...
Charon位于Sakai的portal模块内,通过构建一个名为`portal.war`的Web应用程序来实现其功能。这意味着所有的Sakai URL都将以`/portal`开头,这一改变使得URL结构更加清晰,也便于系统管理员进行管理和维护。 **2. ...
**Sakai 2.6配置详解** Sakai是一个开源的教育软件平台,它提供了丰富的协作和学习工具,广泛应用...通过对`sakai.properties`的深入研究,我们可以使Sakai更好地适应特定需求,提升用户体验,并确保系统的稳定运行。
教学与教务管理系统2 0教学sakai系统用户使用手册(转自北邮)。
sakai是广泛应用于高校的开源课程管理系统,具有良好的架构设计,具有很好的解耦行、扩展性和稳定性。目前sakai的二次开发广泛流行于企业、高校和个人,希望有兴趣我们可以共同交流,欢迎交流!
### Sakai 的安装与配置详解 #### 一、概述 Sakai 是一款开源的教育协作平台,广泛应用于教育机构中。本文档旨在详细介绍 Sakai 2.9.0 版本的安装与配置过程,并解决在安装过程中可能遇到的一些常见问题。 #### ...
sakai安装文档,很有用的安装Sakai App Builder
标题 "sakai-portal-api-2.9.0-b05.zip" 暗示了这是一个关于Sakai门户API的版本包,版本...同时,由于是开源项目,开发人员可以深入研究源代码,根据自己的需求进行修改和扩展,从而提升Sakai系统的功能性和用户体验。