# JFinalShiroPlugin **Repository Path**: huangjunfa/jfinalshiroplugin ## Basic Information - **Project Name**: JFinalShiroPlugin - **Description**: 扩展玛雅牛的jfinalshiroplugin,支持jfinal template 的标签。 传送门---> - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: http://git.oschina.net/myaniu/jfinalshiroplugin - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 24 - **Created**: 2017-06-19 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # JFinalShiroPlugin 是针对@玛雅牛 JFinalShiroPlugin 在 **jfinal 3.0+ **版本 做的一个扩展,支持shiro 标签。 ## 使用方法 ### 1. clone 本项目到本地,然后执行maven install ``` com.jfinal jfinal-shiro 3.1.0 ``` ### 2. 配置jfinal config 如果使用jf template 的话,构造ShiroPlugin(engine),注意不再是原来 **Routes**对象啦。 ``` public class LmsCoreConfig extends JFinalConfig { private Engine engine; /** * 配置模板引擎 * * @param me Engine */ public void configEngine(Engine me) { this.engine = me; } /** * 配置插件 * * @param me Plugins */ public void configPlugin(Plugins me) { ShiroPlugin shiroPlugin = new ShiroPlugin(engine); shiroPlugin.setLoginUrl("/login"); shiroPlugin.setUnauthorizedUrl("/unauthorized"); me.add(shiroPlugin); } /** * 配置拦截器 * * @param me Interceptors */ public void configInterceptor(Interceptors me) { me.add(new ShiroInterceptor()); } } ``` ### 3.页面使用 ``` 获取Subject Principal 信息 #principal() 用户没有身份验证时显示相应信息,即游客访问信息。 #guest() body #end 用户已经身份验证/记住我登录后显示相应的信息。 #shiroUser() body #end 用户已经身份验证通过,即Subject.login登录成功,不是记住我登录的 #authenticated() body #end 用户已经身份验证通过,即没有调用Subject.login进行登录,包括记住我自动登录的也属于未进行身份验证。 #noAuthenticated() body #end 验证当前Subject是否有该权限 #hasPermission(permissionName) body #end 验证当前用户是否属于以下角色 #hasRole(roleName) body #end 验证当前用户是否属于以下全部角色 #hasAllRoles(roleName1,roleName2) body #end 验证当前用户是否属于以下任意一个角色 #hasAnyRoles(roleName1,roleName2) body #end 验证当前Subject是否有下列全部权限 #hasAllPermission(permissionName1,permissionName2) body #end 验证当前Subject是否没有该权限 #lacksPermission(permissionName) body #end 验证当前Subject是否没有角色 #lacksRole(roleName) body #end ``` ### 4.特殊情况处理 如果 共享函数模板文件中有使用 shiro标签时,要在afterJFinalStart 后加入,而不是在configEngine中 ``` /** * 启动后回调 */ public void afterJFinalStart() { engine.addSharedFunction("xxxx.html"); } ``` ### PS 例子可以参考:[http://git.oschina.net/log4j/LMS](http://git.oschina.net/log4j/LMS) 反馈帮助: QQ群237587118