JFinalShiroPlugin
是针对@玛雅牛 JFinalShiroPlugin 在 **jfinal 3.0+ ** 版本 做的一个扩展,支持shiro 标签。
如果你使用的3.3版本,请直接看https://gitee.com/log4j/jfinalshiroplugin/tree/1.3/ 的 readme
使用方法
1. pom加入
<dependency> <groupId>com.github.jieblog</groupId> <artifactId>jfinal-shiro</artifactId> <version>1.0</version> </dependency> 最新的代码请 clone :https://gitee.com/log4j/jfinalshiroplugin mvn install
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
有啥问题阔以加我Q:154987607