权限控制——SpringSecurity应用(初始项目改进)

本文详细介绍了如何在SpringSecurity中实现权限控制,包括配置可匿名访问资源、指定登录页面、从数据库查询用户信息、密码加密、配置多种校验规则、注解方式权限控制以及退出登录等功能。通过实例演示了每个步骤,帮助读者掌握SpringSecurity的使用。
摘要由CSDN通过智能技术生成

1. 配置可匿名访问的资源  

第一步:在项目中创建pages目录,在pages目录中创建a.html和b.html

第二步:在spring_security.xml文件中配置,指定哪些资源可以匿名访问

    <!--
    http:用于定义相关权限控制
    配置哪些资源可以匿名访问(即不登录也可以访问)
-->
    <security:http security="none" pattern="/pages/a.html" />
    <security:http security="none" pattern="/paegs/b.html" />
<!--  使用通配符方式,使代码更为简洁  -->
<security:http security="none" pattern="/pages/**"></security:http>

 注:此时pages目录中仅创建a.html和b.html两个页面。因此,通过以上配置,pages目录下的文件可以在没有认证的情况下任意访问。

2. 使用指定的登录页面 

第一步:提供login.html作为项目的登录页面

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
<form action="login.do" method="post">
    username:<input type="text" name="username"><br>
    password:<input type="password" name="password"><br>
    <input type="submit" value="submit">
</form>
</body>
</html>

第二步:修改spring-security.xml文件,指定login.html页面可以匿名访问

<security:http security="none" pattern="/login.html" />

 第三步:修改spring-security.xml文件,加入表单登录信息的配置

 注:如果我们要使用自己指定的页面作为登录页面,必须配置登录表单,页面提交的登录表单请求是由框架负责处理。

第四步:修改spring-security.xml文件,关闭CsrfFilter过滤器

<!--
csrf:对应CsrfFilter过滤器
disabled:是否启用CsrfFilter过滤器,如果使用自定义登录页面需要关闭此项,否则登录操作会被禁用(403)
-->
<security:csrf disabled="true"></security:csrf>

修改后完整代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<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.xsd">
    <!--
    http:用于定义相关权限控制
    配置哪些资源可以匿名访问(不登录也可以访问)
-->
<!--    <security:http security="none" pattern="/pages/a.html" />-->
<!--    <security:http security="none" pattern="/paegs/b.html" />-->

    <!--  使用通配符方式,使代码更为简洁  -->
<!--    <security:http security="none" pattern="/pages/**"></security:http>-->

    <security:http security="none" pattern="/login.html" />
    <!--
  auto-config:是否自动配置
              设置为true时框架会提供默认的一些配置,例如提供默认的登录页面、登出处理等
              设置为false时需要显示提供登录表单配置,否则会报错
  use-expressions:用于指定intercept-url中的access属性是否使用表达式
-->
    <security:http auto-config="true" use-expressions="true">
        <!--
            intercept-url:定义一个拦截规则
            pattern:对哪些url进行权限控制
            access:在请求对应的URL时需要什么权限,默认配置时它应该是一个以逗号分隔的角色列表,
				  请求的用户只需拥有其中的一个角色就能成功访问对应的URL
        -->
        <security:intercept-url pattern="/**"  access="hasRole('ROLE_ADMIN')" />

        <!--   form-login:定义表单登录信息   -->
        <security:form-login login-page="/login.html"
                             username-parameter="username"
                             password-parameter="password"
                             login-processing-url="/login.do"
                             default-target-url="/index.html"
                             authentication-failure-url="/login.html"
        />

        <!--
        csrf:对应CsrfFilter过滤器
        disabled:是否启用CsrfFilter过滤器,如果使用自定义登录页面需要关闭此项,否则登录操作会被禁用(403)
        -->
        <security:csrf disabled="true"></security:csrf>
    </security:http>

    <!--
        authentication-manager:配置认证管理器,用于处理认证操作
    -->
    <security:authentication-manager>
        <!-
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值