/**
* 自定义一个ShiroTagFreeMarkerConfigurer继承Spring本身提供的FreeMarkerConfigurer,目的是在FreeMarker的Configuration中添加shiro的配置
* @author q
*
*/
public class ShiroTagFreeMarkerConfigurer extends FreeMarkerConfigurer{
@Override
public void afterPropertiesSet() throws IOException, TemplateException {
super.afterPropertiesSet();
this.getConfiguration().setSharedVariable("shiro", new ShiroTags());
}
修改freemarker在spring配置文件中的配置
<!-- 配置freeMarker的模板路径 -->
<!-- <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> -->
<bean id="freemarkerConfig" class="com.ws.config.web.freemarker.ShiroTagFreeMarkerConfigurer">
<!-- 用自定义的类 替代原生类-->
<property name="templateLoaderPath">
<value>/WEB-INF/ftl/</value>
</property>
<property name="freemarkerVariables">
<map>
<entry key="xml_escape" value-ref="fmXmlEscape" />
</map>
</property>
<property name="defaultEncoding">
<value>utf-8</value>
</property>
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">5</prop> <!--检查模板是否更新 秒 -->
</props>
</property>
</bean>
下面具体讲讲标签应用,先列出原先的方式,再列出freemarker的方式,网上例举 比较少
guest标签
验证当前用户是否为“访客”,即未认证(包含未记住)的用户
<shiro:guest>
</shiro:guest>
freemark中: <@shiro.guest>
</@shiro.guest>
user标签
认证通过或已记住的用户
<shiro:user>
</shiro:user>
freemark中:
<@shiro.user>
</@shiro.user>
authenticated标签
已认证通过的用户。不包含已记住的用户,这是与user标签的区别所在。
<shiro:authenticated>
</shiro:authenticated>
freemark中:
<@shiro.authenticated>
</@shiro.authenticated>
principal 标签
输出当前用户信息,通常为登录帐号信息
Hello, <shiro:principal property="name"/>
freemarker中:
Hello, <@shiro.principal property="name" />, how are you today?
hasRole标签
验证当前用户是否属于该角色
<shiro:hasRole name="administrator">
Administer the system
</shiro:hasRole>
freemarker中:
<@shiro.hasRole name=”admin”>Hello admin!</@shiro.hasRole>
好了 其他没说的 依次类推
还有一个问题 就是 如果默认用shiro登录后是remember me true的
那么用户登录后 如果此时重启tomcat 那么
<@shiro.principal property="name" />还是有值的
这时候退出按钮的控制应该用:<@shiro.user>
退出
</@shiro.user>
对于必须authc的操作 必须
重新登录 因为此时 的用户只是读取的 remember me(个人理解)
并没有通过认证,因为tomcat重启过了
不知道大家有没有遇到过该情况 可以 研究探讨下
分享到:
相关推荐
9. **错误处理**:在模板中使用Shiro标签时,要注意异常处理。当用户权限不足或未登录时,应该给出友好的提示,而不是让页面出现错误信息。 10. **最佳实践**:在实际项目中,合理规划权限结构和角色分配,避免过度...
1. 在FreeMarker模板中使用Shiro标签库:在.ftl文件顶部引入Shiro标签库: ```html <#assign shiro = "shiro:${'@org.apache.shiro.web.tags.ShiroTagLibHandler@getTagLibUri()'}"> ${shiro}" as shiro/> ``` 2. ...
在 Freemarker 模板中,通过引入相应的标签库,就可以直接调用 Shiro 的权限检查功能。这大大降低了开发者在前端模板中实现动态权限控制的难度,使得项目更易于维护和扩展。 总的来说,`...
在实际应用中,你可以根据用户角色分配不同的权限,然后在模板中使用Shiro标签进行控制。例如,只有管理员角色的用户才能看到“删除用户”按钮: ```html <#if shiro.hasPermission('delete:user')}> ()">删除用户...
freemarker集成shiro标签
7. **实际应用**:这个Demo可能包含了一个简单的Web应用,展示如何在Freemarker模板中使用Shiro标签进行权限控制,比如控制菜单项的显示、操作按钮的启用等,确保只有具备特定权限的用户才能访问特定的功能。...
jfinal-shiro-freemarker jfinal shiro plugin freemarker tags,查看其他插件-> ...在freemarker中使用 FreeMarkerRender.getConfiguration().setSharedVariable("shiro", new ShiroTags()); 已经登陆判断
最后,需要在 Controller 中使用 Shiro 的注解来保护资源,例如: ```java @RestController @RequestMapping("/admin") public class AdminController { @GetMapping("/index") @RequiresPermissions("admin:...
- **使用Shiro标签**:在视图层,可以利用Shiro的标签库,如`<shiro:hasPermission>`、`<shiro:principal>`等,动态展示或隐藏页面元素。 **4. 示例代码** 以下是一个简单的Shiro Realm示例: ```java public ...
在压缩包 "springboot-zjt-chapter10-springboot-mysql-mybatis-shiro-freemarker-layui-master" 中,我们可以看到包含的组件有: 1. **Spring Boot**:这是一个由Pivotal团队提供的用于构建Spring应用的Java/...
在使用Thymeleaf或Freemarker时,Shiro提供了一些标签库,可以用来显示或隐藏某些内容,根据用户的角色和权限。 四、实战项目解析 "springboot-shiro-2.rar"项目包含了以上所述的整合流程,通过阅读和实践这个小...
2. **模板语法**:FreeMarker使用类似于`<#if>`、`<#foreach>`等标签进行条件判断和循环,便于模板编写。 3. **分离前后端**:FreeMarker的使用使得业务逻辑与视图展示分离,提高了代码的可读性和可维护性。 再来看...
解决方案:在 FreeMarkerViewExtend.java 33行处 增加了BasePath ,通过BasePath 来控制请求目录,在 Freemarker 中可以自由使用,而 JSP 中是直接在 JSP 中获取BasePath 使用。 解决后遗症:因为我们的权限是通过...
Apache Shiro是Java的安全管理框架,`ssm+shiro`标签表明项目中会用到Shiro进行权限管理和认证。Shiro能处理用户身份验证、授权、会话管理和安全性,为开发者提供了简单易用的API。 另外,`aspectjweaver-1.7.1.jar...
- **Frameset定义**:使用`<frameset>`标签定义了页面的布局结构,整个页面被划分为三个部分,分别是顶部、主要内容区域和底部。 - **顶部** (`top`):固定高度64像素,不可滚动且不可调整大小。 - **主要内容...
【标题】"毕业设计使用springboot+mybatis+shiro+activity的企业办公Oa系统"是一个基于Java技术栈开发的企业级办公自动化(OA)系统的项目。这个系统利用了SpringBoot框架来简化微服务的构建,MyBatis作为持久层框架...
并提供akka异步执行集成,多数据源自动orm映射,flyway数据库脚本升级, shiro 权限系统 freemarker-shiro标签支持,以及其他改进 使用angularjs作为前端框架, 以及 bootstrap requireJs+coffeescript+less...
灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求(如需控制到按钮等级,需使用Shiro标签,控制按钮的显示或隐藏) 页面互动使用Vue2.x,极大的提高了开发效率 完善的代码生成机制,可在线生成实体,xml...
1.使用jfinal-shiro实现数据库级别的权限灵活定制,和freemarker的权限标签 2.使用jfinal-captcha实现验证码 3.使用jfinal-web实现根据ajax请求返回json数据,其他返回默认数据,支持继承JFController使用getModels...
| ├── FreeMarker -- 自定义FreeMarker标签 │ ├── resources | ├── mapper -- SQL对应的XML文件 | ├── templates -- FreeMarker模版 │ ├── webapp | ├── statics -- 静态资源 | ├── upload -...