2024年最全Java中使用Spring-security(一),分享我在Java开发中走的一些弯路

结尾

查漏补缺:Java岗 千+道面试题Java基础+全家桶+容器+反射+异常等

这不止是一份面试清单,更是一种”被期望的责任“,因为有无数个待面试者,希望从这篇文章中,找出通往期望公司的”钥匙“,所以上面每道选题都是结合我自身的经验于千万个面试题中经过艰辛的两周,一个题一个题筛选出来再次对好答案和格式做出来的,面试的答案也是再三斟酌,深怕误人子弟是小,影响他人仕途才是大过,也希望您能把这篇文章分享给更多的朋友,让他帮助更多的人,帮助他人,快乐自己,最后,感谢您的阅读。

由于细节内容实在太多啦,在这里我花了两周的时间把这些答案整理成一份文档了,在这里只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

在servlet配置xml文件或应用程序上下文xml中,您需要在*<beans …>标记的xsi:schemaLocation*中指定以下URL 。

<beans xmlns=“http://www.springframework.org/schema/beans”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xmlns:security=“http://www.springframework.org/schema/security”

xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">



要启用Spring Security,您需要将以下过滤器添加到/WEB-INF/web.xml。

springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /*

因此,在*标签中,您需要定义filter-namefilter-class*,就像为应用程序定义servlet-nameservlet-class一样。只不过这里filter-namefilter-class是固定的。

在**标记中,您可以定义应该通过spring安全性检查的路径,一般是个正则表达式。

springSecurityFilterChain过滤器即DelegatingFilterProxy,就是servlet对应委托的过滤器和拦截器。拦截器内部进行我们的特殊动作,如:身份验证,授权。

Spring安全配置:

您需要在应用程序上下文xml文件(或servlet config xml文件)中的*<beans …> … </ beans>*标记下定义以下标记。

<security:http auto-config=“true” use-expressions=“true”>

<security:intercept-url pattern=“/login**” access=“permitAll” />
<security:intercept-url pattern=“/resources/" access=“permitAll” />
<security:intercept-url pattern="/
” access=“hasRole(‘USER’)” />
<security:intercept-url pattern=“/admin**” access=“hasRole(‘ADMIN’)” />

<security:form-login />

<security:logout logout-success-url=“/logout” />
</security:http>

在*<security:http …>标记内,添加要保护的资源。如上所示,我使用<security:intercept-url>标记定义了四个拦截器*。

在这里,我配备了几种校验,哪些URL允许所有用户(包括匿名用户)访问,哪些URL仅限于某些用户角色访问。

例如:

在上面的代码片段中“/login”,“/ resources /”路径开头的任何页面,都可以被包括匿名用户在内的所有人访问。

而“/ admin”路径,只有具备ADMIN角色的用户才可以访问,依此类推…

Spring-securitydh 提供了一个默认的内置登录页面,其中有两个文本框用于输入用户名和密码,还有一个提交按钮用于提交凭据以进行验证。您无需为应用程序设计登录表单。一旦用户在其浏览器上打开应用程序URL,spring-security将检查用户是否未登录,然后将用户重定向到spring-security提供的默认登录表单。

如果需要自定义登录页面,则可以将spring-security配置为使用自定义登录页面。您可以使用<security:form-login>标记在<security:http> … </ security:http>标记内定义自定义登录表单页面。以下是配置示例。

<security:http auto-config=“true” use-expressions=“true”>

<security:intercept-url pattern=“/login**” access=“permitAll” />
<security:intercept-url pattern=“/resources/" access=“permitAll” />
<security:intercept-url pattern="/
” access=“hasRole(‘USER’)” />
<security:intercept-url pattern=“/admin**” access=“hasRole(‘ADMIN’)” />

<security:form-login

login-page=“/login”

default-target-url=“/”

authentication-failure-url=“/login?error=1”

username-parameter=“username”

password-parameter=“password” />

<security:logout logout-success-url=“/logout” />

</security:http>

在<security:form-login …>标记中,

  • 在“login-page”中,您可以指定自定义登录页面URL路径。
  • 在“default-target-url”中,您可以指定用户在成功登录后应该导航的URL。
  • 在“authentication-failure-url”中,您可以指定用户在登录失败后应该导航的URL。
  • “username-parameter”和“password-parameter” - 这两个是可选的。默认情况下,spring-security在登录表单中接受参数名称“j_username”和“j_password”作为用户名和密码。如果要在登录表单中为用户名和密码输入字段指定任何其他名称,则可以在<security:form-login …>标记中的这两个属性中指定自定义参数名称。

在<security:logout …>标记中,

  • 在“logout-success-url”中,您可以指定在用户在退出登陆后,应该跳向哪个页面URL路径。

在</ security:http>标记结束后,您需要添加以下标记,即<security:authentication-manager>。这适用于身份验证管理器。

security:authentication-manager

最后

针对以上面试题,小编已经把面试题+答案整理好了

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

最新大厂必问微服务面试题汇总:SpringCloud、Boot、Dubbo

面试专题

image

除了以上面试题+答案,小编同时还整理了微服务相关的实战文档也可以分享给大家学习

image

image

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**

需要这份系统化的资料的朋友,可以点击这里获取

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值