SpringBoot:集成Shiro之Shiro标签(.jsp和.ftl)
前言
上一篇博客,我们说到如何在使用户请求的时候,阻拦使用户请求进行操作,这一篇博客我们来聊一下如何用Shiro标签在网页之中进行使用户角色和权限控制.那么,我们就看一下具体的场景,假设页面当中有一个新添加使用户按钮,我们需要当拥有admin角色的使用户登录认证完成之后显示,普通使用户不显示,那么这时候我们就需要用Shiro标签来做解决了.例如这个例子,我们即可以使用一下代码来实现.假如含有admin就会显示,反之,则不会显示.
<shiro:hashRole name = "admin"> <button >新添加使用户</button></shiro:hashRole>
JSP的Shiro标签
在JSP中用Shiro标签比较简单,我们只要要注意使用法就可.下面我就把所以Shiro标签放在下面了,各位看官自行查考.
<shiro:guest> 游客访问 <a href = "login.jsp"></a></shiro:guest> user 标签:使用户已经通过认证\记住我 登录后显示响应的内容<shiro:user> 欢迎[<shiro:principal/>]登录 <a href = "logout">退出</a></shiro:user> authenticated标签:使用户身份验证通过,即 Subjec.login 登录成功 不是记住我登录的<shiro:authenticted> 使用户[<shiro:principal/>] 已身份验证通过</shiro:authenticted> notAuthenticated标签:使用户未进行身份验证,即没有调使用Subject.login进行登录,包括"记住我"也属于未进行身份验证<shiro:notAuthenticated> 未身份验证(包括"记住我")</shiro:notAuthenticated> principal 标签:显示使用户身份信息,默认调使用Subjec.getPrincipal()获取,即Primary Principal<shiro:principal property = "username"/> hasRole标签:假如当前Subject有角色将显示body体内的内容<shiro:hashRole name = "admin"> 使用户[<shiro:principal/>]拥有角色admin</shiro:hashRole> hasAnyRoles标签:假如Subject有任意一个角色(或者的关系)将显示body体里的内容<shiro:hasAnyRoles name = "admin,user"> 使用户[<shiro:pricipal/>]拥有角色admin 或者者 user</shiro:hasAnyRoles> lacksRole:假如当前 Subjec没有角色将显示body体内的内容<shiro:lacksRole name = "admin"> 使用户[<shiro:pricipal/>]没有角色admin</shiro:lacksRole> hashPermission:假如当前Subject有权限将显示body体内容<shiro:hashPermission name = "user:create"> 使用户[<shiro:pricipal/>] 拥有权限user:create</shiro:hashPermission> lacksPermission:假如当前Subject没有权限将显示body体内容<shiro:lacksPermission name = "org:create"> 使用户[<shiro:pricipal/>] 没有权限org:create</shiro:lacksPermission>
Freemark的Shiro标签
在SpringBoot里面并不是直接支持JSP文件的,而后我就在项目中用了Freemark,但是Shiro标签并不能直接支持.ftl文件,所以我们需要先引入一个Maven依赖.
<dependency> <groupId>net.mingsoft</groupId> <artifactId>shiro-freemarker-tags</artifactId> <version>0.1</version></dependency>
而后,我们写一个名为ShiroTagsFreeMarkerCfg配置类来对Freemark用Shiro标签进行配置.当然了,要确定配置类能被正确注入到Bean中,代码如下所示.
import com.jagregory.shiro.freemarker.ShiroTags;import freemarker.template.TemplateModelException;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;import javax.annotation.PostConstruct;@Componentpublic class ShiroTagsFreeMarkerCfg { @Autowired private FreeMarkerConfigurer freeMarkerConfigurer; @PostConstruct public void setSharedVariable() throws TemplateModelException { freeMarkerConfigurer.getConfiguration().setSharedVariable("shiro", new ShiroTags()); }}
配置类搞好之后,我们即可以在.ftl文件中用Shiro的权限标签了,标签格式如下所示.
<@shiro.guest> 游客访问 <a href = "login.jsp"></a></@shiro.guest> user 标签:使用户已经通过认证\记住我 登录后显示响应的内容<@shiro.user> 欢迎[<@shiro.principal/>]登录,<a href="/logout.html">退出</a> </@shiro.user> authenticated标签:使用户身份验证通过,即 Subjec.login 登录成功 不是记住我登录的<@shiro.authenticated> 使用户[<@shiro.principal/>]已身份验证通过 </@shiro.authenticated> notAuthenticated标签:使用户未进行身份验证,即没有调使用Subject.login进行登录,包括"记住我"也属于未进行身份验证<@shiro.notAuthenticated> 当前身份未认证(包括记住我登录的)</@shiro.notAuthenticated> principal 标签:显示使用户身份信息,默认调使用Subjec.getPrincipal()获取,即Primary Principal<@shiro.principal property="username"/> hasRole标签:假如当前Subject有角色将显示body体内的内容<@shiro.hasRole name="admin"> 使用户[<@shiro.principal/>]拥有角色admin<br/> </@shiro.hasRole> hasAnyRoles标签:假如Subject有任意一个角色(或者的关系)将显示body体里的内容<@shiro.hasAnyRoles name="admin,user,member"> 使用户[<@shiro.principal/>]拥有角色admin或者user或者member<br/> </@shiro.hasAnyRoles> lacksRole:假如当前 Subjec没有角色将显示body体内的内容<@shiro.lacksRole name="admin"> 使用户[<@shiro.principal/>]不拥有admin角色</@shiro.lacksRole> hashPermission:假如当前Subject有权限将显示body体内容<@shiro.hasPermission name="user:add"> 使用户[<@shiro.principal/>]拥有user:add权限</@shiro.hasPermission> lacksPermission:假如当前Subject没有权限将显示body体内容<@shiro.lacksPermission name="user:add"> 使用户[<@shiro.principal/>]不拥有user:add权限</@shiro.lacksPermission>
结语
写到这里,前前后后写了八篇Shiro集成博客,这个系列的博客到此就结束了,后期假如遇到新的问题会继续补充,欢迎继续关注骚栋.内心骚栋,未忘初心.
参考博客
Demo传送门
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » SpringBoot:集成Shiro之Shiro标签(.jsp和.ftl)
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » SpringBoot:集成Shiro之Shiro标签(.jsp和.ftl)