`
tar0917
  • 浏览: 8599 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

play自定义标签-操作权限控制

 
阅读更多
多用户,多角色。
每个用户登陆进来。获取这个用户下所拥有的操作权限保存到缓存中
/**
	 * 操作权限保存到缓存中
	 */
	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()'/}
分享到:
评论

相关推荐

    play24-action-composition-di-example:play24-action-composition-di-example

    1. **Play Framework 2.4**: 了解框架的基本架构,包括路由、控制器、模板、模型-视图-控制器(MVC)模式的应用,以及如何通过命令行工具进行开发、测试和部署。 2. **动作(Action)**: Play的动作是处理HTTP请求...

    html5自定义音频播放界面

    在`&lt;audio&gt;`标签内,可以设置`src`属性来指定音频文件的路径,如`我爱你胜过你爱我.mp3"&gt;&lt;/audio&gt;`。此外,还可以通过添加`controls`属性来显示默认的播放、暂停和音量控制。 2. **Audio API**: Audio API是HTML5...

    修改system读取sdcard权限.rar

    在Android系统中,由于安全性和隐私保护的考虑,对应用程序访问外部存储卡(SDcard)的权限有着严格的控制。在Android 6.0(API级别23)之后,系统引入了运行时权限管理机制,应用需要在运行时请求访问SDcard的权限...

    jpush-android-4.9.0-google-play

    1. **权限申请**:确保应用具有INTERNET和RECEIVE_BOOT_COMPLETED等必要权限。 2. **异常处理**:正确处理JPush相关可能出现的异常,如网络问题、服务未启动等。 3. **测试验证**:在多种设备和Android版本上进行...

    安卓连苹果carplay软件

    CarPlay是苹果公司推出的一项车载信息系统,它允许用户通过iOS设备控制车辆的多媒体、导航和通讯功能,以实现更安全、便捷的驾驶体验。在Android设备上实现与CarPlay的连接,通常需要第三方软件或适配器。 描述中...

    googleplay框架搭建

    此外,`TabPageIndicator`(现在通常被`TabLayout`取代)是一个可自定义的视图,用于在TabIndicator上显示标签,可以使用`setupWithViewPager()`将其与`ViewPager`连接。 **文件名称列表:googlepaly** 这个文件名...

    jpush-android-5.0.0-google-play

    标题 "jpush-android-5.0.0-google-play" 指的是JPush在Android平台上的一个特定版本,这是极光推送(JPush)服务的一个SDK,版本号为5.0.0,针对Google Play商店优化。JPush是极光公司提供的一款全方位的推送服务,...

    自定义mp4播放器

    3. VideoControllerView:这是自定义的视频控制器,通常包含播放/暂停按钮、全屏切换、进度条等元素。我们可以根据需求定制这些控件的样式和功能。 实现过程中,关键步骤如下: 1. 创建SurfaceHolder.Callback:...

    从google play上下载app的APK Downloader 源码

    【标签】"googlePlay"、"下载app"、"APK Downloader"、"源码"这些标签揭示了这个工具的核心功能和特性。"googlePlay"指的是它与Google Play商店的关联;"下载app"说明其主要任务是从商店下载APK;"APK Downloader"是...

    Android_QSG119_KOR-1.pdf

    - **自定义标签**:可根据需求添加或修改自定义标签页。 - **查看或编辑设置**:配置个人偏好设置和高级选项。 - **查看账户信息**:查看已登录的账户详情或注销账户。 #### 2. 在平板电脑上使用 - **查看或编辑...

    mongoauth_2.9.1-1-2.5-M2-0.3.zip

    MongoAuth可能扩展了MongoDB的默认安全功能,提供了更高级别的用户管理和权限控制。版本号2.9.1-1-2.5-M2-0.3表明这是一个迭代开发中的版本,可能包含了错误修复、性能提升或新功能。 【描述】中提到的"maven-play2...

    play2-blog:使用Scala和Play框架的博客引擎

    **Play2-Blog:Scala与Play框架的博客引擎** Play框架是Java和Scala社区中流行的Web应用开发框架,以其简洁的MVC(Model-View-Controller)架构和强大的功能著称。在“play2-blog”项目中,开发人员利用Scala语言和...

    Android移动应用开发从入门到精通[有明细目录PDF+源代码 全

    以下是根据标题、描述以及标签提炼出的主要知识点: 1. **Android简介**: - Android操作系统的基本概念和架构 - Android SDK的安装与环境配置 - Android Studio的使用,包括项目创建、调试和构建过程 2. **...

    android安全机制

    Android系统还支持自定义权限策略,允许开发者为特定应用或用户定制权限行为。此外,系统还会定期检查权限的使用情况,以便及时发现和处理潜在的安全问题。 综上所述,Android的安全机制是一个多层面的体系,包括...

    达芬奇界面中英文对照

    - 软件界面中的主要功能区,包含文件操作、编辑工具、视图选项、标记管理、回放控制、色彩校正、节点编辑及帮助文档等。 #### 二、文件与编辑 - **文件**: File - 包含“新建项目”、“新建夹子”等菜单项,用于...

    struts-2.2.1.1 jar文件

    Struts2是一个强大的Java Web应用程序框架,用于构建和管理MVC(模型-视图-控制器)架构的应用程序。它的核心是Action和Result,提供了一种灵活的方式来处理HTTP请求和响应,以及模型数据的处理和视图的展示。Struts...

    SMSPopup.zip

    - **权限声明**:在AndroidManifest.xml文件中,需要声明`&lt;uses-permission&gt;`标签来获取读取和发送短信的权限,如`&lt;uses-permission android:name="android.permission.RECEIVE_SMS" /&gt;`和`&lt;uses-permission android...

    简单的照相机实现

    - 应用必须在AndroidManifest.xml中声明`&lt;uses-feature&gt;`标签,声明使用相机功能,否则可能无法在Google Play上发布。 - 检查设备是否有可用的相机,避免在没有相机的设备上运行。 9. **内存管理**: - 大图可能...

    walkersoft-system-20150325-lib及数据库

    在Java中,权限管理通常是通过访问控制修饰符(如public, private, protected)和安全框架(如Java Security Manager)来实现的,以确保代码的安全性和隔离性。 “后台框架”表明这个系统是为服务器端设计的,可能...

    Launcher10.v2.2.2.CHS-zhiyoo_df_

    【标题】"Launcher10.v2.2.2.CHS-zhiyoo_df_" 指的是一款名为 Launcher10 的应用的中文版本,版本号为2.2.2,由 zhiyoo 团队进行汉化,并带有“df”标签。这个标签可能代表特定的分发渠道或者定制特征,但具体含义...

Global site tag (gtag.js) - Google Analytics