linux切换java版本_java_home environment variable

linux切换java版本_java_home environment variable© 版权声明:本文为博主原创文章,转载请注明出处本文根据官方文档加上自己的理解,仅供参考官方文档:https://docs.spring.io/spring-security/

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

© 版权声明:本文为博主原创文章,转载请注明出处

本文根据官方文档加上自己的理解,仅供参考

官方文档:https://docs.spring.io/spring-security/site/docs/5.0.3.RELEASE/reference/htmlsingle/#hello-web-security-java-configuration

介绍:

linux切换java版本_java_home environment variable

 

第一步是创建Spring Security的java配置。这个配置创建了一个Servlet过滤器被称为springSecurityFilterChain,它负责你的应用中所有的安全问题(保护应用程序的url,验证提交的用户名和密码,重定向到登录表单等等)。

你可以在下面找到Spring Security Java 配置最基础的例子:

linux切换java版本_java_home environment variable

linux切换java版本_java_home environment variable

这个配置并没有太多东西,但是做了很多。你可以找到下面的特征摘要

  • 需要验证您的应用程序中每个URL
  • 为您生成一个登录表单
  • 允许用户用username的用户名和password的密码进行基于表单的身份验证
  • 允许用户注销
  • 预防CSRF攻击
  • Session Fixation保护
  • 安全头集成
    • 为了保护请求采用HTTP强制安全传输技术
    • X-Content-Type-Options集成
    • 缓存控制(可以由应用程序稍后重写,允许缓存静态资源)
    • X-XSS-Protection集成
    • X-Frame-Options集成去防止“点击劫持”
  • 与下面的Servlet API方法集成
    • HttpServletRequest#getRemoteUser()
    • HttpServletRequest.html#getUserPrincipal()
    • HttpServletRequest.html#isUserInRole(java.lang.String)
    • HttpServletRequest.html#login(java.lang.String, java.lang.String)
    • HttpServletRequest.html#logout()

 linux切换java版本_java_home environment variable

下一步是注册springSecurityFilterChain到war中。在一个Servlet 3 +环境,可以使spring的webapplicationinitializer支持java的配置。毫无疑问的是,Spring Security提供一个基类AbstractSecurityWebApplicationInitializer

确保springSecurityFilterChain被注册,我们使用AbstractSecurityWebApplicationInitializer的方式是取决于我们已经使用了Spring还是Spring Security是我们应用中唯一的Spring组件

  • 章节5.1.2,“AbstractSecurityWebApplicationInitializer不存在Spring” – 如果你没有使用Spring用这个说明
  • 章节5.1.3,“AbstractSecurityWebApplicationInitializer存在Spring MVC” – 如果你已经使用Spring用这个说明

linux切换java版本_java_home environment variable

如果你没有使用Spring或Spring MVC,你将需要通过在WebSecurityConfig到父类确保配置被使用。你可以在下面找到一个例子:

linux切换java版本_java_home environment variable

linux切换java版本_java_home environment variable

这个SecurityWebApplicationInitializer将做到下面这些事情:

  • 自动为你的应用中的每个URL注册springSecurityFilterChain过滤器
  • 添加ContextLoaderListener加载WebSecurityConfig

linux切换java版本_java_home environment variable

如果我们已经在应用的其他地方使用了Spring,那么可能已经有了一个WebApplicationInitializer去加载我们的Spring配置。如果我们使用之前的配置可能会得到一个错误。相反,我们应该注册

Spring Security到已经存在的ApplicationContext。例如,如果我们使用Spring MVC我们的SecurityWebApplicationInitializer可能会像下面这样:

linux切换java版本_java_home environment variable

linux切换java版本_java_home environment variable

它很简单的为我们应用中的每个URL注册了springSecurityFilterChain过滤器,之后我们将确保WebSecurityConfig将被加载到已存在的ApplicationInitializer。例如:如果我们使用Spring MVC,

它将被添加在getRootConfigClasses()方法中

linux切换java版本_java_home environment variable

实例:

项目结构:

linux切换java版本_java_home environment variable

pom.xml

linux切换java版本_java_home environment variable
linux切换java版本_java_home environment variable

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.springsecurity</groupId> <artifactId>WebSecurity</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-framework-bom</artifactId> <version>5.0.4.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>5.0.3.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>5.0.3.RELEASE</version> </dependency> </dependencies> <build> <finalName>WebSecurity</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>

pom.xml

WebSecurityConfig.java

linux切换java版本_java_home environment variable
linux切换java版本_java_home environment variable

package org.springsecurity.config; import org.springframework.context.annotation.Bean; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.provisioning.InMemoryUserDetailsManager; @EnableWebSecurity public class WebSecurityConfig { @Bean @SuppressWarnings("deprecation") public UserDetailsService userDetailsService() { InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); manager.createUser(User.withDefaultPasswordEncoder() .username("username").password("password").roles("USER").build()); return manager; } }

WebSecurityConfig.java

SecurityWebApplicationInitializer.java

linux切换java版本_java_home environment variable
linux切换java版本_java_home environment variable

package org.springsecurity.config; import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer { public SecurityWebApplicationInitializer() { super(WebSecurityConfig.class); } }

SecurityWebApplicationInitializer.java

 

项目预览

 

linux切换java版本_java_home environment variable

 

说明

  1. 该项目只有两个java文件
  2. pom.xml中引入的依赖,也可以在官方文档中找到。地址:https://docs.spring.io/spring-security/site/docs/5.0.3.RELEASE/reference/htmlsingle/#maven
  3. 但是自动生成了登录界面,并可用WebSecurityConfig.java中配置的用户名username和密码password进行登录
  4. 登录完成后自动跳转到index.jsp,该页面是创建web项目时自动生成的
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/168046.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • WPF布局之WrapPanel与StackPanel

    WPF布局之WrapPanel与StackPanel转载:https://www.cnblogs.com/Im-Victor/p/10565030.html三.WrapPanelWrapPanel布局面板将各个控件从左至右按照行或列的顺序罗列,当长度或高度不够是就会自动调整进行换行,后续排序按照从上至下或从右至左的顺序进行。Orientation——根据内容自动换行。当Horizontal选项看上去类似于Windows资源管理器的缩略图视图:元素是从左向右排列的,然后自上至下自动换行。Vertical选项看上去类似于Windows资源..

  • 二进制与十进制的相互转换

    二进制与十进制的相互转换博客引用处(以下内容在原有博客基础上进行补充或更改,谢谢这些大牛的博客指导):二进制如何转十进制,十进制如何转二进制十进制转二进制转成二进制主要有以下几种:正整数转二进制,负整数转二进制,小数转二进制;1、正整数转成二进制。要点一定一定要记住哈:除二取余,然后倒序排列,高位补零。也就是说,将正的十进制数除以二,得到的商再除以二,依次类推知道商为零或一时为止,然后在旁边标出各步的余数,…

    2022年10月17日
  • 手机打开照相机_安卓11调用第三方相机

    手机打开照相机_安卓11调用第三方相机打开相机布局代码<Buttonandroid:id=”@+id/take_photo”android:layout_width=”match_parent”android:layout_height=”wrap_content”android:layout_gravity=”center”android:text=”打开相机”/><Buttonandroid:id=”@+id/chose_photo”andro

  • js二维码生成

    详细介绍可以查看API网站:http://code.ciaoca.com/javascript/qrcode/ (前端开发仓库)一、引入js文件&amp;lt;!– 第一步:引进js文件 –&amp;gt; &amp;lt;script type=”text/javascript” src=”js/jquery.min.js”&amp;gt; \ &amp;lt;script type=”text/java…

    2021年11月30日
  • c++入门教程–-3数据类型,变量与常量

    c++入门教程–-3数据类型,变量与常量

  • linux内核启动流程(文章最后流程图)

    linux内核启动流程(文章最后流程图)原文:linux内核启动流程本文以Linux3.14版本源码为例分析其启动流程。各版本启动代码略有不同,但核心流程与思想万变不离其宗。内核映像被加载到内存并获得控制权之后,内核启动流程开始。通常,内核映像以压缩形式存储,并不是一个可以执行的内核。因此,内核阶段的首要工作是自解压内核映像。内核编译生成vmliunx后,通常会对其进行压缩,得到zImage(小内核,小于512KB)或bzI…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号