当前位置: 首页 > news >正文

怎样把网站做的漂亮成都微信网站建设多

怎样把网站做的漂亮,成都微信网站建设多,网站建设朋友圈素材,局域网网站开发目录 1. 什么是会话管理2. springSecurity中的session管理怎么做的3. springSecurity源码中的session管理4. 代码示例5. 源码5.1 不同策略的含义 6. 集群模式session管理7. 总结 1. 什么是会话管理 会话管理是指在Java应用程序中管理用户会话状态的过程。在Spring框架中#… 目录 1. 什么是会话管理2. springSecurity中的session管理怎么做的3. springSecurity源码中的session管理4. 代码示例5. 源码5.1 不同策略的含义 6. 集群模式session管理7. 总结 1. 什么是会话管理 会话管理是指在Java应用程序中管理用户会话状态的过程。在Spring框架中可以使用Spring Session来实现会话管理。Spring Session提供了一种机制用于在不同的会话存储后端例如内存、数据库、Redis等中存储和管理会话数据。 通过使用Spring Session您可以轻松地在Spring应用程序中管理会话。它提供了简单的API用于创建、读取、更新和删除会话数据。您可以使用Spring的依赖注入机制将Spring Session集成到您的应用程序中并根据需要配置会话存储后端。 会话管理在Web应用程序中尤为重要因为它允许您跟踪用户的登录状态、存储用户特定的数据并提供一种机制来管理会话的过期和超时。通过有效地管理会话您可以提供更安全、可靠的用户体验并确保应用程序的性能和可扩展性。 总而言之会话管理是通过Spring Session在Java应用程序中管理用户会话状态的过程它提供了一种机制来存储和管理会话数据并确保应用程序的安全性和性能。 2. springSecurity中的session管理怎么做的 在Spring Security中可以通过配置来管理会话。以下是在Spring Security中进行会话管理的一般步骤 添加Spring Security依赖在项目的构建文件如pom.xml中添加Spring Security的依赖项。 配置会话管理在Spring Security的配置文件中可以使用 sessionManagement() 方法来配置会话管理。例如您可以设置会话超时时间、最大并发会话数等。 配置会话固定攻击防护为了防止会话固定攻击您可以使用 sessionFixation() 方法配置会话固定攻击防护策略。常见的防护策略包括更改会话ID、使用cookie作为会话ID等。 配置会话存储后端您可以选择将会话数据存储在不同的后端如内存、数据库、Redis等。根据您的需求配置会话存储后端以存储和管理会话数据。 定义访问控制规则使用Spring Security的访问控制规则您可以定义哪些URL需要进行会话管理和访问控制。例如您可以配置需要进行身份验证的URL或者需要特定角色或权限才能访问的URL。 通过以上步骤您可以在Spring Security中实现会话管理。具体的配置和实现方式可能会根据您的应用程序需求而有所不同。您可以参考Spring Security的官方文档和示例代码以获得更详细的指导和示例。 3. springSecurity源码中的session管理 Security源码中会话管理的一般实现方式 SessionManagementConfigurer 接口这是一个配置接口用于配置会话管理的各个方面如会话超时时间、最大并发会话数等。您可以使用 sessionManagement() 方法获取 SessionManagementConfigurer 实例并通过调用其方法来配置会话管理。SessionFixationConfigurer 接口这是一个配置接口用于配置会话固定攻击防护策略。您可以使用 sessionFixation() 方法获取 SessionFixationConfigurer 实例并通过调用其方法来配置会话固定攻击防护。SessionRegistry 接口这是一个接口用于管理并发会话。它提供了注册、注销和获取会话的方法以及获取活动会话数等功能。 SessionRegistry 的默认实现是 SessionRegistryImpl 。ConcurrentSessionControlAuthenticationStrategy 类这是一个会话控制策略类用于限制并发会话数。它通过与 SessionRegistry 结合使用检查当前用户的会话数并处理超出限制的情况。SessionAuthenticationStrategy 接口这是一个接口用于处理用户身份验证时的会话管理。它定义了在用户登录时如何处理会话包括创建新会话、销毁旧会话等。 以上是Spring Security源码中会话管理的一般实现方式。具体的实现细节和类可能会根据不同版本的Spring Security而有所不同。如果您有兴趣深入了解Spring Security的会话管理实现请参考Spring Security的源代码和文档。 4. 代码示例 Configuration EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(HttpSecurity http) throws Exception {http.sessionManagement().invalidSessionStrategy(invalidSessionStrategy()).maximumSessions(1) // 最大并发会话数.maxSessionsPreventsLogin(true) // 超出最大会话数时阻止登录.expiredSessionStrategy(expiredSessionStrategy()).and().and().logout().deleteCookies(JSESSIONID) // 在注销时删除会话ID的Cookie.invalidateHttpSession(true); // 注销时使会话失效}Beanpublic InvalidSessionStrategy invalidSessionStrategy() {return new CustomInvalidSessionStrategy();}Beanpublic SessionInformationExpiredStrategy expiredSessionStrategy() {return new CustomExpiredSessionStrategy();} }public class CustomInvalidSessionStrategy implements InvalidSessionStrategy {Overridepublic void onInvalidSessionDetected(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {// 自定义会话失效处理逻辑response.sendRedirect(/session-invalid); // 重定向到会话失效页面} }public class CustomExpiredSessionStrategy implements SessionInformationExpiredStrategy {Overridepublic void onExpiredSessionDetected(SessionInformationExpiredEvent event) throws IOException, ServletException {// 自定义会话过期处理逻辑HttpServletResponse response event.getResponse();response.sendRedirect(/session-expired); // 重定向到会话过期页面} }在上述代码中通过 invalidSessionStrategy() 方法和 expiredSessionStrategy() 方法分别定义了自定义的会话失效策略和会话过期策略。您可以在相应的自定义策略类中实现自己的会话失效和会话过期处理逻辑。在示例中 CustomInvalidSessionStrategy 类处理会话失效 CustomExpiredSessionStrategy 类处理会话过期。您可以根据实际需求修改这些类来实现您自己的逻辑。 请注意以上代码只是一个简单的示例您可以根据实际需求进行更详细的配置和自定义。 5. 源码 查看源码WebSecurityConfigurerAdapter类的applyDefaultConfiguration()方法 private void applyDefaultConfiguration(HttpSecurity http) throws Exception {http.csrf();http.addFilter(new WebAsyncManagerIntegrationFilter());//exceptionHandling 方法这个方法会将 ExceptionHandlingConfigurer 配置进来// 最终调用 ExceptionHandlingConfigurer#configure 方法将 ExceptionTranslationFilter 添加到 Spring Securityhttp.exceptionHandling();http.headers();//进行session管理http.sessionManagement();http.securityContext();http.requestCache();http.anonymous();http.servletApi();http.apply(new DefaultLoginPageConfigurer());http.logout();}public SessionManagementConfigurerHttpSecurity sessionManagement() throws Exception {return getOrApply(new SessionManagementConfigurer());} 可以看到会话管理是由SessionManagementConfigurer类处理。SessionManagementConfigurer类源码 public final class SessionManagementConfigurerH extends HttpSecurityBuilderHextends org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurerSessionManagementConfigurerH, H {//默认策略private final SessionAuthenticationStrategy DEFAULT_SESSION_FIXATION_STRATEGY createDefaultSessionFixationProtectionStrategy();//策略赋值private SessionAuthenticationStrategy sessionFixationAuthenticationStrategy this.DEFAULT_SESSION_FIXATION_STRATEGY;/*** Invokes {link #postProcess(Object)} and sets the* {link SessionAuthenticationStrategy} for session fixation.* * 默认策略* param sessionFixationAuthenticationStrategy*/private void setSessionFixationAuthenticationStrategy(SessionAuthenticationStrategy sessionFixationAuthenticationStrategy) {this.sessionFixationAuthenticationStrategy postProcess(sessionFixationAuthenticationStrategy);}/*** Allows configuring SessionFixation protection* 不同策略初始化* author Rob Winch*/public final class SessionFixationConfigurer {/*** Specifies that a new session should be created, but the session attributes from* the original {link HttpSession} should not be retained.* return the {link SessionManagementConfigurer} for further customizations*/public SessionManagementConfigurerH newSession() {SessionFixationProtectionStrategy sessionFixationProtectionStrategy new SessionFixationProtectionStrategy();sessionFixationProtectionStrategy.setMigrateSessionAttributes(false);setSessionFixationAuthenticationStrategy(sessionFixationProtectionStrategy);return SessionManagementConfigurer.this;}/*** Specifies that a new session should be created and the session attributes from* the original {link HttpSession} should be retained.* return the {link SessionManagementConfigurer} for further customizations*/public SessionManagementConfigurerH migrateSession() {setSessionFixationAuthenticationStrategy(new SessionFixationProtectionStrategy());return SessionManagementConfigurer.this;}/*** Specifies that the Servlet container-provided session fixation protection* should be used. When a session authenticates, the Servlet method* {code HttpServletRequest#changeSessionId()} is called to change the session ID* and retain all session attributes.* return the {link SessionManagementConfigurer} for further customizations*/public SessionManagementConfigurerH changeSessionId() {setSessionFixationAuthenticationStrategy(new ChangeSessionIdAuthenticationStrategy());return SessionManagementConfigurer.this;}/*** Specifies that no session fixation protection should be enabled. This may be* useful when utilizing other mechanisms for protecting against session fixation.* For example, if application container session fixation protection is already in* use. Otherwise, this option is not recommended.* return the {link SessionManagementConfigurer} for further customizations*/public SessionManagementConfigurerH none() {setSessionFixationAuthenticationStrategy(new NullAuthenticatedSessionStrategy());return SessionManagementConfigurer.this;}} }...... 5.1 不同策略的含义 不同的session策略是为了解决会话固定攻击的。会话固定攻击Session Fixation Attack是一种安全漏洞利用该漏洞攻击者可以劫持用户的会话。在Spring Security中会话固定攻击指的是攻击者在用户登录之前获取到了一个会话ID并将其注入到用户的浏览器中然后用户使用该会话ID进行登录。这样攻击者就可以通过使用相同的会话ID来劫持用户的会话获取用户的敏感信息或执行恶意操作。为了防止会话固定攻击Spring Security提供了一些机制如使用随机生成的会话ID、在用户登录时重新生成会话ID等。这些机制可以有效地保护用户的会话安全。 SessionFixationConfigurer类是Spring Security中的一个配置类用于配置会话固定攻击保护。它提供了一些方法来配置会话ID的处理方式以防止会话固定攻击。 newSession登录之后创建一个新的sessionmigrateSession登录之后创建一个新的session 并将旧的session中的数据复制过来changeSessionId不创建新的会话而是使用由Servlet容器提供的会话固定保护none不做任何的处理登陆之后沿用就的session 6. 集群模式session管理 在Spring Security集群模式下可以使用分布式缓存来管理会话。 首先确保你的项目中已经引入了Redis的依赖。 在Spring配置文件中配置Redis连接信息 创建一个实现 org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration 的配置类 import org.springframework.context.annotation.Configuration; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;Configuration EnableRedisHttpSession public class SessionConfig {// 可以在这里配置会话过期时间等参数 }在Spring Security配置类中启用会话管理 import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;public class SecurityConfig extends WebSecurityConfigurerAdapter {Overrideprotected void configure(HttpSecurity http) throws Exception {http// 其他Spring Security配置.and().sessionManagement().maximumSessions(1) // 设置允许的最大会话数.maxSessionsPreventsLogin(false) // 当达到最大会话数时是否阻止新登录.expiredUrl(/session-expired); // 会话过期后跳转的URL} }通过以上配置Spring Security将会话信息存储在Redis中实现了会话在集群环境下的管理和共享。你可以根据自己的需求进行相关配置和调整。以上代码只是简单的代码示例具体使用要根据具体情况而定。 7. 总结 Spring Security会话管理的原理如下 用户登录时Spring Security会为用户创建一个会话并生成一个唯一的会话ID。会话ID会被存储在用户的浏览器Cookie中或者作为请求参数传递给服务器。在后续的请求中用户会携带会话ID来进行身份验证和授权。服务器接收到请求后会根据会话ID来查找对应的会话信息。通过会话信息服务器可以验证用户的身份并进行相应的授权操作。如果会话过期或被注销服务器会清除对应的会话信息并要求用户重新登录。Spring Security提供了一些配置选项和机制如会话超时时间、并发会话控制、会话固定攻击保护等可以根据需求进行定制和扩展。 通过这种方式Spring Security实现了对用户会话的管理和安全控制确保用户的身份验证和授权操作的可靠性和安全性。
http://www.tj-hxxt.cn/news/133084.html

相关文章:

  • 手机网站建立wordpress注册直接发送密码
  • 个人网站备案资料加强网站信息建设
  • 建立设计网站富阳潍坊网站建设优化推广
  • 微网站矩阵怎么做如何扫描网站漏洞
  • 做自己的网站收费吗wordpress多站点开启
  • 东阳网站建设报价网站建设使用什么软件
  • 个人网站如何备案湖北微网站建设费用
  • 企业网站的建设与实现乌镇网站开发文档
  • 国内企业网站模板网站优化 流量
  • 东莞建站公司速推全网天下首选网站建设预算模板
  • 炒域名 网站asp.net新建网站
  • wordpress站内访问谷歌用php建网站
  • 公司网站如何宣传推广有经验的网站建设公司
  • 深圳出名网站建设公司做轴承生意的网站
  • 网站建设合同任wordpress盲注
  • 网站建设宣传方案门户网站跳出率
  • php网站开发实战前端技术栈有哪些
  • 优秀 响应式网站国内做轮胎网站
  • 全媒体网站的建设刚刚北京发生大事了
  • 指定词整站优化做软件界面一般用什么软件
  • 永久免费网站服务器建设项目自主验收网站
  • 监测网站空白栏目商贸有限公司取名免费
  • 有什么办法做自己的网站数据分析网
  • 网站首页的logo这么修改怎么做自己的手机网站
  • 自己如何创建网站wordpress发视频教程
  • 吴江做招聘的网站做网站需要好多图片
  • 门户网站建设好如何维护品牌网站建设联系方式
  • 泰坦科技网站建设个人网站怎么建立步骤
  • 网站开发计划甘特图公司背景墙logo设计
  • 四川法制建设网站做网站干什么用