多用户,多角色。
每个用户登陆进来。获取这个用户下所拥有的操作权限保存到缓存中
/**
* 操作权限保存到缓存中
*/
public static void getOperaction(int userId){
if(Cache.get("operation_"+userId)==null){
List<Operation> list=getUserOperation(userId);
Map map=new HashMap();
for(Operation o:list){
//o.operationCode 方法名称(Controller.Action.XXX)
//o.operationNameCn 操作权限名称
map.put(o.operationCode,o.operationNameCn);
}
Cache.set("operation_"+userId,map,"24h");
}
}
/**
* 获得用户所有的操作权限
* @param userId
*/
public static List<Operation> getUserOperation(int userId){
List<Operation> list=new ArrayList<Operation>();
List<RuOperation> roleList=getRoleOpenation(userId);
for(RuOperation ru:roleList){
Operation oper=Operation.find("id=?",Long.valueOf(ru.operationId)).first();
if(oper!=null){
list.add(oper);
}
}
List<RuOperation> userList=RuOperation.find("userId=?",userId).fetch();
for(RuOperation ru:userList){
Operation oper=Operation.find("id=?",Long.valueOf(ru.operationId)).first();
if(oper!=null){
list.add(oper);
}
}
return list;
}
/**
* 获得角色操作权限
*/
public static List<RuOperation> getRoleOpenation(int userId){
//用户所拥有的角色
List<RoleUser> role=RoleUser.find("userId=?",userId).fetch();
//角色拥有的操作权限
List<RuOperation> list=new ArrayList<RuOperation>();
for(RoleUser r:role){
RuOperation ru=RuOperation.find("roleId=?",r.id.intValue()).first();
if(ru!=null){
list.add(ru);
}
}
return list;
}
定义自定义标签
%{
String userId=play.mvc.Controller.session.user_id; //获取登陆用户id
String str='operation_'+userId;
Map map=play.cache.Cache.get(str); //从缓存中获取所拥有操作权限
if(map!=null && map.containsKey(_key)){ }%
<a class="${_class}" onclick="${_onclick}">%{out.print(map.get(_key))}%</a>
%{}
}%
页面调用
#{operation key:'system.user.add',class:'btn btn-primary',onclick:'addUser()'/}
分享到:
相关推荐
1. **Play Framework 2.4**: 了解框架的基本架构,包括路由、控制器、模板、模型-视图-控制器(MVC)模式的应用,以及如何通过命令行工具进行开发、测试和部署。 2. **动作(Action)**: Play的动作是处理HTTP请求...
在`<audio>`标签内,可以设置`src`属性来指定音频文件的路径,如`我爱你胜过你爱我.mp3"></audio>`。此外,还可以通过添加`controls`属性来显示默认的播放、暂停和音量控制。 2. **Audio API**: Audio API是HTML5...
在Android系统中,由于安全性和隐私保护的考虑,对应用程序访问外部存储卡(SDcard)的权限有着严格的控制。在Android 6.0(API级别23)之后,系统引入了运行时权限管理机制,应用需要在运行时请求访问SDcard的权限...
1. **权限申请**:确保应用具有INTERNET和RECEIVE_BOOT_COMPLETED等必要权限。 2. **异常处理**:正确处理JPush相关可能出现的异常,如网络问题、服务未启动等。 3. **测试验证**:在多种设备和Android版本上进行...
CarPlay是苹果公司推出的一项车载信息系统,它允许用户通过iOS设备控制车辆的多媒体、导航和通讯功能,以实现更安全、便捷的驾驶体验。在Android设备上实现与CarPlay的连接,通常需要第三方软件或适配器。 描述中...
此外,`TabPageIndicator`(现在通常被`TabLayout`取代)是一个可自定义的视图,用于在TabIndicator上显示标签,可以使用`setupWithViewPager()`将其与`ViewPager`连接。 **文件名称列表:googlepaly** 这个文件名...
标题 "jpush-android-5.0.0-google-play" 指的是JPush在Android平台上的一个特定版本,这是极光推送(JPush)服务的一个SDK,版本号为5.0.0,针对Google Play商店优化。JPush是极光公司提供的一款全方位的推送服务,...
3. VideoControllerView:这是自定义的视频控制器,通常包含播放/暂停按钮、全屏切换、进度条等元素。我们可以根据需求定制这些控件的样式和功能。 实现过程中,关键步骤如下: 1. 创建SurfaceHolder.Callback:...
【标签】"googlePlay"、"下载app"、"APK Downloader"、"源码"这些标签揭示了这个工具的核心功能和特性。"googlePlay"指的是它与Google Play商店的关联;"下载app"说明其主要任务是从商店下载APK;"APK Downloader"是...
- **自定义标签**:可根据需求添加或修改自定义标签页。 - **查看或编辑设置**:配置个人偏好设置和高级选项。 - **查看账户信息**:查看已登录的账户详情或注销账户。 #### 2. 在平板电脑上使用 - **查看或编辑...
MongoAuth可能扩展了MongoDB的默认安全功能,提供了更高级别的用户管理和权限控制。版本号2.9.1-1-2.5-M2-0.3表明这是一个迭代开发中的版本,可能包含了错误修复、性能提升或新功能。 【描述】中提到的"maven-play2...
**Play2-Blog:Scala与Play框架的博客引擎** Play框架是Java和Scala社区中流行的Web应用开发框架,以其简洁的MVC(Model-View-Controller)架构和强大的功能著称。在“play2-blog”项目中,开发人员利用Scala语言和...
以下是根据标题、描述以及标签提炼出的主要知识点: 1. **Android简介**: - Android操作系统的基本概念和架构 - Android SDK的安装与环境配置 - Android Studio的使用,包括项目创建、调试和构建过程 2. **...
Android系统还支持自定义权限策略,允许开发者为特定应用或用户定制权限行为。此外,系统还会定期检查权限的使用情况,以便及时发现和处理潜在的安全问题。 综上所述,Android的安全机制是一个多层面的体系,包括...
- 软件界面中的主要功能区,包含文件操作、编辑工具、视图选项、标记管理、回放控制、色彩校正、节点编辑及帮助文档等。 #### 二、文件与编辑 - **文件**: File - 包含“新建项目”、“新建夹子”等菜单项,用于...
Struts2是一个强大的Java Web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用程序。它的核心是Action和Result,提供了一种灵活的方式来处理HTTP请求和响应,以及模型数据的处理和视图的展示。Struts...
- **权限声明**:在AndroidManifest.xml文件中,需要声明`<uses-permission>`标签来获取读取和发送短信的权限,如`<uses-permission android:name="android.permission.RECEIVE_SMS" />`和`<uses-permission android...
- 应用必须在AndroidManifest.xml中声明`<uses-feature>`标签,声明使用相机功能,否则可能无法在Google Play上发布。 - 检查设备是否有可用的相机,避免在没有相机的设备上运行。 9. **内存管理**: - 大图可能...
在Java中,权限管理通常是通过访问控制修饰符(如public, private, protected)和安全框架(如Java Security Manager)来实现的,以确保代码的安全性和隔离性。 “后台框架”表明这个系统是为服务器端设计的,可能...
【标题】"Launcher10.v2.2.2.CHS-zhiyoo_df_" 指的是一款名为 Launcher10 的应用的中文版本,版本号为2.2.2,由 zhiyoo 团队进行汉化,并带有“df”标签。这个标签可能代表特定的分发渠道或者定制特征,但具体含义...