【问题标题】:Spring MVC - change security settings dynamicallySpring MVC - 动态更改安全设置
【发布时间】:2016-05-02 05:39:17
【问题描述】:

我正在开发一个 Java Spring MVC 应用程序,并且我正在为 Spring Security 使用基于 Java 的配置。 我需要动态更改一些 Spring Security 设置(在用户活动期间)。这是我的代码的一部分:

@Override
protected void configure(HttpSecurity http) throws Exception {

         http
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .loginPage("/admin/login")
            ...

}

例如,在用户活动期间,我需要将 /admin/login 网址更改为 customer/login

【问题讨论】:

  • @AlanHay 我需要根据某些条件动态更改expiredUrl。换句话说,在condition1 中,我想当用户的会话超时时,将他重定向到/x1/login,而在condition2 中,我想将他重定向到/x2/login。在当前设置中,当用户会话超时时,spring 会将他重定向到/x1/login(默认登录页面)。你能帮帮我吗?
  • 您的问题中提到的配置是全局级别的,而不是每个用户级别的,所以我看不出如何改变它。

标签: java spring-mvc spring-security


【解决方案1】:

我会简单地提供 HTML 中的链接,一个给客户,一个给管理员 :)

但我猜你不会问这对你来说是否是一个有效的解决方案。根据您编写一些解决方法的乐趣,您可以采用这种方法:

  • 为您的用户创建一个匿名会话,以记住用户的最后活动类别。如果 spring-security 不能(轻松)为您完成这项工作,只需将活动类别存储在 cookie 中。现在您可以选择解决方案 (1) 或 (2)。

    1. 根据您存储的信息,您可以动态决定将哪个目标登录 URL 呈现到 HTML 页面中。这样您就可以动态链接正确的登录页面。
    2. 解决方案 (1) 的缺点是,您必须根据存储的值在每个控制器中设置正确的目标 URL。也许更好的方法是让您的 HTML 始终指向同一个登录调度程序控制器,并根据存储的活动类别将请求转发到正确的登录页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-23
    • 2014-07-11
    相关资源
    最近更新 更多