Spring 在控制器声明之前检查会话值
在Spring中是否有方法在访问控制器之前检查会话变量是否已设置且是否具有特定值 除非设置了特定的会话变量,否则限制对整个控制器的访问的点 粗体和斜体的代码行并不存在,它只是我为了解释我的想法而编造的 用于解释的示例代码:Spring 在控制器声明之前检查会话值,spring,session,Spring,Session,在Spring中是否有方法在访问控制器之前检查会话变量是否已设置且是否具有特定值 除非设置了特定的会话变量,否则限制对整个控制器的访问的点 粗体和斜体的代码行并不存在,它只是我为了解释我的想法而编造的 用于解释的示例代码: @Controller ***@SessionCheckValue(session.getAttribute("value")=="true" else redirect_to_some_page)*** public class MainController { pu
@Controller
***@SessionCheckValue(session.getAttribute("value")=="true" else redirect_to_some_page)***
public class MainController {
public String index() {
return "index";
}
}
使用,您可以将@PreAuthorize
注释添加到执行逻辑的controller*类中,例如:
@PreAuthorize("@someBean.isUserVerified()")
// or
@PreAuthorize("#{T(com.package.someClass).someStaticAuthenticationMethod()}")
或者您可以使用AspectJ编写自己的AOP建议。如果您不介意将注释放在方法级别而不是类级别,那么也是一个选项。尽管我在编写自己的安全实现时会很谨慎
此外,Spring支持方法安全性(如上所述)和web安全性。在web安全中,身份验证+授权在HTTP(S)端点上执行,而不是在类/方法上执行。可以找到一个比较
*注意:Spring建议在服务层而不是控制器层上添加类/方法安全性,因为多个控制器可能引用同一个服务。这取决于具体情况。对于多个控制器/方法,还是只在一个方法中需要它。