gpt4 book ai didi

java - 如何使用 Spring Security 根据用户对 URL 的访问来显示 JSP 内容

转载 作者:行者123 更新时间:2023-11-30 11:53:47 25 4
gpt4 key购买 nike

如果你想根据用户对一个或多个URL的访问来显示JSP页面中的内容,很容易做到根据用户对一个URL的访问:

<sec:authorize url="/someurl">
<!-- show content, if someurl is accessible -->
</sec:authorize>

但是,有时根据用户可访问 URL 上的某些 boolean 表达式显示内容可能会很方便,例如(不正确):

<sec:authorize url="!'/someurl'">
<!-- show content, if someurl is inaccessible -->
</sec:authorize>

<sec:authorize url="'/someurl1' and '/someurl2'">
<!-- show content, if someurl1 and someurl2 are accessible -->
</sec:authorize>

到目前为止,我想出了一个肮脏的解决方案,使用 Spring EL 构造和自定义类中的静态方法:

<sec:authorize access="!T(my.package.MyClass).isAccessibleToUser('/someurl')">
<!-- show content, if someurl is inaccessible -->
</sec:authorize>

有没有更优雅的方法来实现这一点?

最佳答案

我只想将该逻辑放在与页面关联的 Controller 中,而不是将其全部塞入前端,或者如果您使用的是 Spring MVC,更好的解决方案是创建一个 RequestInterceptor 类。

public class RequestInterceptor extends HandlerInterceptorAdapter {
@Override
public void postHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView) throws Exception {

// logic here that checks if the user can see something
modelAndView.addObject("canUserSeeSection", abooleanvalue);

super.postHandle(request, response, handler, modelAndView);
}
}
}

然后在您的前端,如果标签使用

,您可以使用标准 JSP
<c:if test="${canUserSeeSection}" ... 

同样的想法也适用于 SpringSecurity 标签。

关于java - 如何使用 Spring Security 根据用户对 URL 的访问来显示 JSP 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6083814/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com