js里面可以直接写shiro 标签吗

JavaScript010

js里面可以直接写shiro 标签吗,第1张

JSP中直接引用Shiro标签比较简单可以参考JSP

/ GSP 标签库-Shiro权限学习1:http://blog.csdn.net/ahou2468/article/details/71130582

JS中引用Shiro的标签不起作用的问题解决方法:

1.第一种情况假如js中生成标签代码是固定死的解决起来比较容易,直接在需要权限判断标签前和后加上权限控制标签,即可以起作用

<divid="leftnav"class="site-text"lay-filter="left">

</div>

<scripttype="text/javascript">

var ulHtml

ulHtml += '<shiro:hasRole name="999999">'

ulHtml += '<i class="layui-icon" data-icon="' + data[i].children[j].icon +'">' + data[i].children[j].icon +'</i>'

ulHtml +='</shiro:hasRole>'

$('#leftnav').html(ulHtml)

</script>

,但是假如Shiro标签name参数使动态传进去的则Shiro标签作用失效了,会导致是Shiro标签中所的html标签不管有没有权限都不显示,事例:

<div id="leftnav" class="site-text" lay-filter="left">

</div>

<script type="text/javascript">

var ulHtml

var name = "999999"

ulHtml += '<shiro:hasRole name="'+name+'">'

ulHtml += '<i class="layui-icon" data-icon="' + data[i].children[j].icon + '">' + data[i].children[j].icon + '</i>'

ulHtml +='</shiro:hasRole>'

$('#leftnav').html(ulHtml)

</script>

这种情况我的解决方案是,在后台查询到用户的权限数据时直接放到Session中,js中不通过Shiro标签判断而是自己通过获取权限的url动态判断

/**

* Shiro身份认证+授权 重写

*

*/

public class SampleRealm extends AuthorizingRealm{

/**

* 授权处理

*/

@Override

protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollectionprincipals) {

Long userId = TokenManager.getUserId()

SimpleAuthorizationInfoinfo =new SimpleAuthorizationInfo()

//根据用户ID查询角色和权限,放入到Authorization里。

Set<String>roles = roleService.findRoleByUserId(userId)

info.setRoles(roles)

//根据用户ID查询权限(permission),放入到Authorization里

Set<String>permissions = permissionService.findPermissionByUserId(userId)

info.setStringPermissions(permissions)

//权限数据时直接放到Session中

TokenManager.setVal2Session("permissions", permissions)

returninfo

}

JS中可以通过Session中获取权限数据

var pers = '<%=session.getAttribute("permissions")%>'

//将权限数据数组进行分割转为字符串数组,然后循环判断是否你访问的url元素在授权中,若在授权中动态生成html标签则显示,否则则隐藏掉

var resultpers = pers.replace('[','').replace(']','').split(',')

正常情况是不会出现这样的,shiro对于静态资源的处理,不用特殊配置。

只需要在shiroFilter过滤器filterChainDefinitions项中增加一个静态资源处理规则就可以,例如允许/css/开头的资源匿名访问,只需要这样一句配置就足矣。

/css/**  = anon

配置完成后,未登录就可以在浏览器中直接访问css下的资源,新项目用的shiro,简单而又实用的权限框架。

在shiroFilter 和 mvc:resources中都需要配置,

如:

shiroFilter中:

<property name="filterChainDefinitions">

<value>

/css/** = anon

/js/** = anon

/img/** = anon

</value>

</property>在spring-mvc.xml中:

<mvc:resources mapping="/css/**" location="/css/" cache-period="2592000"/>

<mvc:resources mapping="/img/**" location="/img/" cache-period="2592000"/>

<mvc:resources mapping="/js/**" location="/js/" cache-period="2592000"/>

1 、 首先 创建一个项目名(mail)的文件夹, 在项目文件夹下创建一个存放JS脚本的文件夹,创建一个存放images(图片)的文件夹,创建一个存放CSS样式的文件夹等。

2、 然后在项目文件夹下创建一个WEB-INF的目录文件,JAVA类、jar包、WEB应用的配置文件都存在这个目录下。WEB-INF目录下存放了一些文件,有classes目录(编译好的类库)、lib目录, 每一个WEB应用程序的访问都需要一个配置文件,基于WEB.xml文件,所以在WEB-INF 文件目录下应该创建一个WEB.xml文件。

3、在所创建的项目mail文件夹下创建一个HTML文件,名为index.html。在HTML文件中编辑一些内容。

4、 在tomcat目录文件夹下的conf文件的Catalina\Localhost文件夹下新建一个名为mail.xml的项目文件,在这个文件中编辑代码,写一个Context的配置的路径 如:

<?xml version='1.0' encoding='utf-8'?>

<Context docBase=”C:\mail”/>

5、 最后重新启动Comcat就可以了。