shiro 权限控制标签 需要准备哪些

二次元同好交流新大陆
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
本人是中国人,单身……
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(3772)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'Apache Shiro Java 授权指南',
blogAbstract:'授权,也叫访问控制,提供特定资源访问权限的功能。或者说是什么样的用户可以访问哪些特定资源。
授权检查的例子有:用户是否可以访问某网页,是否可以编辑数据,按钮对其是否可见,或者是否允许打印等。这些都是由哪些用户可以访问哪些资源决定的。
授权组成部分
授权有三个核心要素:权限、角色、用户。
权限是安全领域内的最小单元,且具有陈述功能性。权限代表用户可以使用应用程序完成哪些工作。一个定义良好的权限不仅可以表述资源的类型,还可展示出在与资源交互时可进行哪些操作。比如:你有打开门的权限吗?你对这个文件有读的权限吗?你能删除客户记录吗?这个按钮你能点击吗?
数据相关的操作有增、删、改、查,通常简称为CRUD。
权限的作用不是指明哪个用户可以进行哪些操作,而是仅仅描述可进行的那些操作。',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:1,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:1,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'本人是中国人,单身……',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}shiro之JSP标签
导入标签库 &%@taglib prefix="shiro" uri="http://shiro.apache.org/tags" %> guest-用户没有身份验证时显示相应信息,即游客访问信息。 欢迎游客访问, user-用户已经身份验证/记住我登录后显示相应的信息 authenticate-用户已经身份验证通过,即Subject.login登录成功。 用户[]已身份验证通过 notAuthenticated-用户身份验证未通过,即没有调用Subject.login进行登录,包括记住我自动登录的也属于未进行身份验证 principal-显示用户身份信息,默认调用Subject.getPrincipal()获取,即Primary Principal。 相当于Subject.getPrincipals().oneByType(String.class) 相当于((User)Subject.getPrincipals()).getUsername() hasRole-当前Subject是否拥有角色 lacksRole-当前Subject没有角色 hasAnyRoles-当前Subject有任意一个角色(或的关系) 用户[]拥有角色admin 或user hasPermission-当前Subject有权限 lacksPermission-当前Subject没有权限 用户[]没有权限org:create
最新教程周点击榜
微信扫一扫&&国之画&&&&&&
版权所有 京ICP备号-2
迷上了代码!二次元同好交流新大陆
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
我是凉粉.我会做好这份工.做好这个项目,写好这行代码,做好系统设计
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
anon(匿名) &org.apache.shiro.web.filter.authc.AnonymousFilterauthc(身份验证)
& & &org.apache.shiro.web.filter.authc.FormAuthenticationFilterauthcBasic(http基本验证) &
org.apache.shiro.web.filter.authc.BasicHttpAuthenticationFilterlogout(退出) & & &
org.apache.shiro.web.filter.authc.LogoutFilternoSessionCreation(不创建session)
org.apache.shiro.web.filter.session.NoSessionCreationFilterperms(许可验证)
org.apache.shiro.web.filter.authz.PermissionsAuthorizationFilterport(端口验证)
org.apache.shiro.web.filter.authz.PortFilterrest &(rest方面)
org.apache.shiro.web.filter.authz.HttpMethodPermissionFilterroles(权限验证)
org.apache.shiro.web.filter.authz.RolesAuthorizationFilterssl (ssl方面)
org.apache.shiro.web.filter.authz.SslFilteruser (用户方面)
org.apache.shiro.web.filter.authc.UserFilter详细说明:rest:例子/admins/user/**=rest[user],根据请求的方法,相当于/admins/user/**=perms[user:method] ,其中method为post,get,delete等。port:例子/admins/user/**=port[8081],当请求的url的端口不是8081是跳转到schemal://serverName:8081?queryString,其中schmal是协议http或https等,serverName是你访问的host,8081是url配置里port的端口,queryString是你访问的url里的?后面的参数。perms:例子/admins/user/**=perms[user:add:*],perms参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,例如/admins/user/**=perms["user:add:*,user:modify:*"],当有多个参数时必须每个参数都通过才通过,想当于isPermitedAll()方法。roles:例子/admins/user/**=roles[admin],参数可以写多个,多个时必须加上引号,并且参数之间用逗号分割,当有多个参数时,例如/admins/user/**=roles["admin,guest"],每个参数通过才算通过,相当于hasAllRoles()方法。anon:例子/admins/**=anon 没有参数,表示可以匿名使用。authc:例如/admins/user/**=authc表示需要认证才能使用,没有参数authcBasic:例如/admins/user/**=authcBasic没有参数表示httpBasic认证ssl:例子/admins/user/**=ssl没有参数,表示安全的url请求,协议为httpsuser:例如/admins/user/**=user没有参数表示必须存在用户,当登入操作时不做检查&这些过滤器分为两组,一组是认证过滤器,一组是授权过滤器。其中anon,authcBasic,auchc,user是第一组,perms,roles,ssl,rest,port是第二组shiro 提供的注解,提供方法安全验证,通过验证才执行RequiresAuthentication:使用该注解标注的类,实例,方法在访问或调用时,当前Subject必须在当前session中已经过认证。RequiresGuest:使用该注解标注的类,实例,方法在访问或调用时,当前Subject可以是“gust”身份,不需要经过认证或者在原先的session中存在记录。RequiresPermissions:当前Subject需要拥有某些特定的权限时,才能执行被该注解标注的方法。如果当前Subject不具有这样的权限,则方法不会被执行。RequiresRoles:当前Subject必须拥有所有指定的角色时,才能访问被该注解标注的方法。如果当天Subject不同时拥有所有指定角色,则方法不会执行还会抛出AuthorizationException异常。RequiresUser:当前Subject必须是应用的用户,才能访问或调用被该注解标注的类,实例,方法。shiro提供的jsp标签,提供jsp上验证首先需要在JSP引入shiro标签:&&%@ taglib prefix="shiro" uri="http://shiro.apache.org/tags" %& &guest标签 :&shiro:guest&访客角色&/shiro:guest&验证当前用户是否为“访客”,即未认证(包含未记住)的用户&认证通过或已记住的用户 :&shiro:user& && &用户角色 &&/shiro:user&&authenticated标签:&已认证通过的用户。不包含已记住的用户,这是与user标签的区别所在。&&shiro:authenticated& && & 已认证通过的用户 &&/shiro:authenticated&&notAuthenticated标签:&未认证通过用户,与authenticated标签相对应。与guest标签的区别是,该标签包含已记住用户。&shiro:notAuthenticated& && & 未认证通过用户 &&/shiro:notAuthenticated&&principal 标签:&输出当前用户信息,通常为登录帐号信息 &&&shiro:principal/&hasRole标签:&验证当前用户是否属于该角色&&shiro:hasRole name="角色"&是角色&/shiro:hasRole&lacksRole标签:&与hasRole标签逻辑相反,当用户不属于该角色时验证通过&&shiro:lacksRole name="administrator"& && & Sorry, you are not allowed to administer the system. &&/shiro:lacksRole&&hasAnyRole标签:&验证当前用户是否属于以下任意一个角色。&shiro:hasAnyRoles name="developer, project manager, administrator"& && & You are either a developer, project manager, or administrator. &&/shiro:lacksRole& &hasPermission标签:&验证当前用户是否拥有制定权限&&shiro:hasPermission name="user:create"& && & 验证当前用户是否拥有制定权限&&/shiro:hasPermission&&lacksPermission标签:与hasPermission标签逻辑相反,当前用户没有制定权限时,验证通过&&shiro:hasPermission name="user:create"& && & &a href="createUser.jsp"&Create a new User&/a& &&/shiro:hasPermission&
阅读(2415)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_083',
blogTitle:'shiro 内置过滤器 标签
blogAbstract:'shiro 内置过滤器 标签
注解介绍',
blogTag:'shiro',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:7,
publishTime:9,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'我是凉粉.我会做好这份工.做好这个项目,写好这行代码,做好系统设计',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}13:50 提问
shiro JSP使用标签报错
在JSP页面使用shiro标签报错,要怎么改?求大神指点
java.lang.IllegalArgumentException: Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.
org.apache.shiro.authz.permission.WildcardPermission.setParts(WildcardPermission.java:151)
org.apache.shiro.authz.permission.WildcardPermission.(WildcardPermission.java:142)
org.apache.shiro.authz.permission.WildcardPermission.(WildcardPermission.java:138)
org.apache.shiro.authz.permission.WildcardPermissionResolver.resolvePermission(WildcardPermissionResolver.java:41)
org.apache.shiro.realm.AuthorizingRealm.resolvePermissions(AuthorizingRealm.java:433)
org.apache.shiro.realm.AuthorizingRealm.getPermissions(AuthorizingRealm.java:409)
org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:466)
org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:462)
org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:457)
org.apache.shiro.authz.ModularRealmAuthorizer.isPermitted(ModularRealmAuthorizer.java:223)
org.apache.shiro.mgt.AuthorizingSecurityManager.isPermitted(AuthorizingSecurityManager.java:113)
org.apache.shiro.subject.support.DelegatingSubject.isPermitted(DelegatingSubject.java:158)
org.apache.shiro.web.tags.PermissionTag.isPermitted(PermissionTag.java:66)
org.apache.shiro.web.tags.HasPermissionTag.showTagBody(HasPermissionTag.java:32)
org.apache.shiro.web.tags.PermissionTag.onDoStartTag(PermissionTag.java:57)
org.apache.shiro.web.tags.SecureTag.doStartTag(SecureTag.java:53)
org.apache.jsp.success_jsp._jspx_meth_shiro_005fhasPermission_005f0(success_jsp.java:205)
org.apache.jsp.success_jsp._jspService(success_jsp.java:122)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)
&%@ page contentType="text/charset=UTF-8" language="java" %&
Hello World!
&form action="/login.do" method="post"&
&td&账号:&/td&
&td&&input name="username" value="${users.username}"/&&/td&
&td&密码:&/td&
&td&&input type="password" name="password" value="${users.password}"/&&/td&&br/&
&td&&input type="submit" value="login"/&&span style="font-size: 12color: red"&${error}&/span&&/td&
登录成功之后的页面success.jsp
&%@ page contentType="text/charset=UTF-8" language="java" %&
&%@ taglib prefix="shiro" uri="" %&Insert title here
${info }欢迎你
欢迎有admin角色的用户!shiro:principal/
欢迎有student:create权限的用户!shiro:principal/controller
@Controller
public class UsersController {
@Autowired
private UsersService usersS
@RequestMapping("/login")
public String login(Model model,Users users){
Subject subject = SecurityUtils.getSubject();
UsernamePasswordToken token = new UsernamePasswordToken(users.getUsername(),users.getPassword());
subject.login(token);
Model model1 = (Model) subject.getSession();
model1.addAttribute("info","welcome to");
Session session = subject.getSession();
session.setAttribute("info","Welcome To Shiro");
return "redirect:/success.jsp";
}catch (Exception e) {
e.printStackTrace();
model.addAttribute("users",users);
model.addAttribute("error","用户名或密码错误");
return "index";
按时间排序
下次问问题,得贴代码,大家才能分析...
Shiro提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据登录用户显示相应的页面按钮。
导入标签库
@taglib prefix="shiro" uri="
标签库定义在shiro-web.jar包下的META-INF/shiro.tld中定义。
gu......答案就在这里:----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?
报错:Make sure permission strings are properly formatted.
确认你的权限字串已经格式化了
检查你的hasPermission: name属性
109关注|536收录
364关注|78收录
271关注|623收录
其他相似问题

我要回帖

更多关于 shiro权限验证标签 的文章

 

随机推荐