【黑马旅游订单SSM】 Access is denied和BadBad credentials

在实施黑马程序员旅游订单项目时遇到Spring-Security的AccessDeniedException和BadCredentials问题。通过检查login.jsp、调整spring-security.xml配置、修复UserServiceImpl中的大小写问题、使用BCryptPasswordEncoder加密密码,并处理角色与权限问题,最终解决了登录异常。关键在于正确处理密码加密与数据库中的密码匹配。
摘要由CSDN通过智能技术生成

1 第一次出现

在做黑马程序员中的项目旅游订单管理时,使用ssm+spring-security,但是出现org.springframework.security.access.AccessDeniedException: Access is denied…
spring-security.xml
在这里插入图片描述
因为在登录的时候出现这个,所以应该注意观察login界面:
在这里插入图片描述

有问题在登录界面;查看login.jsp
在这里插入图片描述

2 重新写spring-security.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	   xmlns:security="http://www.springframework.org/schema/security"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   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">

	<!-- 配置不拦截的资源 -->
	<security:http pattern="/login.jsp" security="none"/>
	<security:http pattern="/failer.jsp" security="none"/>
	<security:http pattern="/css/**" security="none"/>
	<security:http pattern="/img/**" security="none"/>
	<security:http pattern="/plugins/**" security="none"/>
	<!--
        配置具体的规则
        auto-config="true"	不用自己编写登录的页面,框架提供默认登录页面
        use-expressions="false"	是否使用SPEL表达式(没学习过)
    -->
	<security:http auto-config="true" use-expressions="false">
		<!-- 配置具体的拦截的规则 pattern="请求路径的规则" access="访问系统的人,必须有ROLE_USER的角色" -->
		<security:intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN"/>

		<!-- 定义跳转的具体的页面 -->
		<security:form-login
				login-page="/login.jsp"
				login-processing-url="/login.do"
				default-target-url="/index.jsp"
				authentication-failure-url="/failer.jsp"
				authentication-success-forward-url="/pages/main.jsp"
		/>

		<!-- 关闭跨域请求 -->
		<security:csrf disabled="true"/>
		<!-- 退出 -->
		<security:logout invalidate-session="true" logout-url="/logout.do" logout-success-url="/login.jsp" />

	</security:http>

	<!-- 切换成数据库中的用户名和密码 -->
	<security:authentication-manager>
		<security:authentication-provider user-service-ref="userService">
			<!-- 配置加密的方式
            <security:password-encoder ref="passwordEncoder"/>-->
		</security:authentication-provider>
	</security:authentication-manager>

	<!-- 配置加密类 -->
	<bean id="passwordEncoder" class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/>

	<!-- 提供了入门的方式,在内存中存入用户名和密码
    <security:authentication-manager>
        <security:authentication-provider>
            <security:user-service>
                <security:user name="admin" password="{noop}admin" authorities="ROLE_USER"/>
            </security:user-service>
        </security:authentication-provider>
    </security:authentication-manager>
    -->

</beans>

着重修改
在这里插入图片描述

这里user是大写
在这里插入图片描述
所以在UserServiceImpl里面需要变为大写。
在这里插入图片描述

3 使用密码加密的时候 出现Access is denied和BadBad credentials

我们在Util下不是写了一个类吗?
老师讲的时候是在自动注入bCryptPasswordEncoder,源代码里有,说我们也可以自己写一个类。
这个是密码加密工具

package com.itheima.ssm.utils;

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

public class BCryptPasswordEncoderUtils {
   
    private static BCryptPasswordEncoder bCryptPasswordEncoder=new BCryptPasswordEncoder();
    public static String encodePassword(String password){
   
        return bCryptPasswordEncoder.encode(password);
    
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>cn.itcast.parent</groupId> <artifactId>itcast-parent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <groupId>cn.itcast</groupId> <artifactId>travel</artifactId> <version>1.0.0-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </dependency> <!-- 连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> <!-- Jackson Json处理工具包 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jsp-api</artifactId> </dependency> </dependencies> <build> <plugins> <!-- 配置Tomcat插件 --> <plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <configuration> <port>8080</port> <path>/</path> </configuration> </plugin> </plugins> </build> </project>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值