如何创建自己的Web安全表达式,这样我就可以在JSP文件中使用它,例如:
Sub test()
Dim copySheet As Worksheet: Set copySheet = Worksheets("Data")
Dim pasteSheet As Worksheet: Set pasteSheet = Worksheets("Print")
copySheet.Range("J11:Q11").Copy
pasteSheet.Range("B" & pasteSheet.Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
End Sub
答案 0 :(得分:1)
这就是您需要的。 请按照以下步骤创建自定义SpEL表达式:
1)创建 WebSecurityExpressionRoot 类的自定义子类。在此子类中,创建一个将在表达式中使用的新方法。例如:
public class CustomWebSecurityExpressionRoot extends WebSecurityExpressionRoot {
public CustomWebSecurityExpressionRoot(Authentication a, FilterInvocation fi) {
super(a, fi);
}
public boolean yourCustomMethod() {
boolean calculatedValue = ...;
return calculatedValue;
}
}
2)创建 DefaultWebSecurityExpressionHandler 类的自定义子类,并覆盖方法 createSecurityExpressionRoot(Authentication authentication,FilterInvocation fi) (而不是createEvaluationContext(...))返回其中的 CustomWebSecurityExpressionRoot 实例。例如:
@Component(value="customExpressionHandler")
public class CustomWebSecurityExpressionHandler extends DefaultWebSecurityExpressionHandler {
@Override
protected SecurityExpressionRoot createSecurityExpressionRoot(
Authentication authentication, FilterInvocation fi) {
WebSecurityExpressionRoot expressionRoot = new CustomWebSecurityExpressionRoot(authentication, fi);
return expressionRoot;
}}
3)在spring-security.xml中定义对表达式处理程序bean的引用
<security:http access-denied-page="/error403.jsp" use-expressions="true" auto-config="false">
...
<security:expression-handler ref="customExpressionHandler"/>
</security:http>
此后,您可以使用自己的自定义表达式来代替标准表达式:
<security:authorize access="yourCustomMethod()">
答案 1 :(得分:0)
我建议您使用Shiro
框架。
官方链接:http://shiro.apache.org /
用AuthorizingRealm
实现extends
,然后在doGetAuthorizationInfo(...)
中添加安全控制的表达式。
在JSP中,首先添加Shiro JSP标记库,官方链接:http://shiro.apache.org/web.html#Web-taglibrary
使用<shiro:hasPermission name="...">...</shiro:hasPermission>
可以控制您需要的东西。 name
属性是一个表达式,它将与您在AuthorizingRealm
中设置的内容进行比较。
以下是权限表达指南:http://shiro.apache.org/permissions.html
这里是一些用法:
<%@ taglib prefix="shiro" uri=http://shiro.apache.org/tags %>
<html>
<body>
<shiro:hasPermission name="users:manage">
<a href="manageUsers.jsp">
Click here to manage users
</a>
</shiro:hasPermission>
<shiro:lacksPermission name="users:manage">
No user management for you!
</shiro:lacksPermission>
</body>
</html>