写点什么

Java 中使用 Spring-security(一),java 做视频直播

  • 2021 年 11 月 10 日
  • 本文字数:2205 字

    阅读完需:约 7 分钟

xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/sche


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


ma/securityhttp://www.springframework.org/schema/security/spring-security-3.1.xsd">............</beans>


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


<filter-mapping><filter-name>springSecurityFilterChain</filter-name><url-pattern>/*</url-pattern></filter-mapping>


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


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


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

Spring 安全配置:

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


" access="permitAll" /><security:intercept-url pattern="/" access="hasRole('USER')" /><security:intercept-url pattern="/admin**" access="hasRole('ADMIN')" />


<security:form-login />


在*<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')" />


login-page="/login"


default-target-url="/"


authentication-failure-url="/login?error=1"


username-parameter="username"


password-parameter="password" />


</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-managersecurity:authentication-providersecurity:user-service<security:user name="stitis" password="mindfire" authorities="USER" /></security:user-service></security:authentication-provider></security:authentication-manager>


根据我们前面概述,为了安全,在用户请求到达 Servlet 之前,或者说在请求到达 Spring Dispatcher Servlet 之前, 我们需要进行身份验证和授权检查的预处理和后期处理。此段代码片断便是这个目的。


在上面的代码片段中,<security:authentication-manager>,*<security:authentication-provider><security:user-service>*用于身份验证。


<security:authentication-manager>用于绑定 UserDetailServices*即用户信息库检查,并获得用户的身份和授予的权限。而前面的<security:http>是指用于安全检查或授权。


这就是 Spring Security 的基础设置和配置部分。 下一篇我们将讲述一些 Spring Security 的高级内容


思考:


security:http 组件与 security:authentication-manager 组件的职责各是什么?


答:


security:http 主要用来配置权限与资源的对应配置,比如访问一个资源 url 的条件,是需要什么 role 才能访问。


而 security:authentication-manager 主要是用来处理登陆认证过程。比如:如

评论

发布
暂无评论
Java中使用Spring-security(一),java做视频直播