当前位置: 首页 > 知识库问答 >
问题:

mvc中的Spring会话管理,Spring Security会话vs http会话

吴胜
2023-03-14

成功登录后,我想用新的url继续进行进一步的请求处理。但url正在调用springmvc中的公开服务,其中的安全配置不会检查会话身份验证以获取传入url。请看下面的代码。

<http auto-config="true" use-expressions="true">
    <!-- <intercept-url pattern="/**" access="isAuthenticated()" /> -->
    <intercept-url pattern="/home*" access="isAuthenticated()" />
    <intercept-url pattern="/admin*" access="isAuthenticated()" />
    <form-login login-page="/" default-target-url="/home"
        authentication-failure-url="/accessdenied" always-use-default-target="false"/>
    <logout logout-success-url="/" />
    <anonymous username="guest" granted-authority="ROLE_GUEST" />
    <session-management invalid-session-url="/" session-authentication-error-url="/login.jsp?error=alreadyLogin">
       <concurrency-control max-sessions="1"  expired-url="/login.jsp?error=sessionExpiredDuplicateLogin" error-if-maximum-exceeded="false"/>
    </session-management>
    <remember-me />
</http>

当jsp页面提交登录验证时,J_security_check调用目标url,该URL随后调用拦截器模式/home*并验证登录凭证。

如果我在登录之前调用公开的服务“/address/userid/”,它将直接调用服务方法,使其成为会话绑定,如果会话存在,则获取其他数据。

Spring安全会话与http会话有何不同,如何维护Spring安全会话,如Springmvc中的http会话。

如果我正在添加

如何在身份验证管理器中根据下面的给定区分userid/pwd,作为单个?采用第一个参数。

<authentication-manager>
    <authentication-provider>
        <!-- <user-service> <user name="admin" password="secret" authorities="ROLE_ADMIN,ROLE_USER"/> 
            </user-service> -->
        <jdbc-user-service data-source-ref="dataSource" 
            users-by-username-query="SELECT USER_NAME,USER_PWD, 'true' as enabled from LOGIN_USER where USER_NAME=?"
            authorities-by-username-query="select LOGIN_USER.USER_NAME , LOGIN_USER.ROLE_ID as authorities from LOGIN_USER
            where LOGIN_USER.USER_NAME =?" />
    </authentication-provider>
</authentication-manager>

我见过几个网站只描述了登录Spring Security会话管理,我不太清楚。提前感谢。


共有1个答案

杭昊空
2023-03-14

我使用拦截器处理程序来检查URI来实现

 类似资料:
  • 我正在开发一个使用Spring框架和Hibernate作为ORM的Web应用程序。我想创建一个注册和登录页面。登录时,应为特定用户创建会话(例如发送cookie等)。由于我是Spring的新手,我不知道如何完成这项工作。有人可以给我一个很好的教程吗?谢谢!

  • 成功开发 Web 应用程序的难题之一是在一次用户访问,即会话期间,当用户在一个应用程序的页与页之间跳转的同时,维护用户信息。HTTP 是一种无状态协议,也就是说,Web 服务器将某页的每次访问都当作相互无关的访问来处理;服务器不保留前一次访问的任何信息,即使访问就发生在当前访问的几秒钟之前。正因为这种不记忆以前访问的特性使得编写联机目录之类的应用程序很困难,此类应用程序可能需要跟踪用户在目录的不同

  • 我是Spring保安的新手。我有一个要求做一个基于URL的身份验证,其中用户需要被认证基于唯一的引用,将发送每次作为一个参数在URL。我将把这个引用传递给webservice,获取所需的数据,然后对用户进行身份验证(并设置角色)。身份验证和授权部分工作正常。 但是,当我再次尝试访问应用程序时(现在在URL中使用了不同的引用),它表示“SecurityContextholder没有用匿名令牌填充,因

  • 问题内容: 我正在开发一个小型Web应用程序,很有趣,目前仅使用Java Servlet。我有两个页面,test1和test2。目前,我正在test1中创建一个新会话,如下所示: 在test2中,我像这样检索会话: 因此,问题在于,如果我先进入test2,我总是会得到一个有效的会话,因为浏览器会创建一个会话。我想限制从test1到test2的流量,因此我必须先进入test1。我的计划是最终创建一个

  • HTTP 是一种无状态协议,即服务器不保留与客户交易时的任何状态,所以当我们在开发 HTTP Server 应用时,我们通常会通过 Session 来实现多个请求之间用户数据的共享。您可通过 hyperf/session 来实现 Session 的功能。Session 组件当前仅适配了两种储存驱动,分别为 文件 和 Redis,默认为 文件 驱动,在生产环境下,我们强烈建议您使用 Redis 来作

  • 问题内容: 我正在研究GWT-ext应用程序。在此应用程序中,我管理了客户端会话。为此,我编写以下代码: 管理会话:import com.google.gwt.user.client.Timer; 获取用户活动: 这段代码可以正常工作,但是我的问题是:随着时间的推移,该代码将自动注销。对于我的代码,我希望单击或按下它即可注销。情况如下:如果用户登录并且注销时间为5分钟,则根据上述代码,用户现在没有