- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经为我的 spring 项目配置了所有设置,但是当我尝试登录应用程序时,它会针对每个请求显示
"The server understood the request but refuses to authorize it."
最初我尝试实现 JDBC 身份验证(您可以看到我在代码中使用数据源)。但后来我也尝试了内存中身份验证,在这两种情况下,我都无法访问资源。
下面是我的 spring 配置文件,
package com.nobalg.config;
import java.beans.PropertyVetoException;
import java.util.logging.Logger;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import com.mchange.v2.c3p0.ComboPooledDataSource;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages="com.nobalg")
@PropertySource("classpath:persistence-mysql.properties")
public class AppConfig {
@Autowired
private Environment env;
private Logger logger = Logger.getLogger(getClass().getName());
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/view/");
resolver.setSuffix(".jsp");
return resolver;
}
@Bean
public DataSource secureDataSource(){
ComboPooledDataSource dataSource = new ComboPooledDataSource();
try {
//Datasource
dataSource.setDriverClass(env.getProperty("jdbc.driver"));
dataSource.setJdbcUrl(env.getProperty("jdbc.url"));
dataSource.setUser(env.getProperty("jdbc.user"));
dataSource.setPassword(env.getProperty("jdbc.password"));
//Connection polling
dataSource.setInitialPoolSize(Integer.parseInt(env.getProperty("connection.pool.initialPoolSize")));
dataSource.setMaxPoolSize(Integer.parseInt(env.getProperty("connection.pool.maxPoolSize")));
dataSource.setMinPoolSize(Integer.parseInt(env.getProperty("connection.pool.minPoolSize")));
dataSource.setMaxIdleTime(Integer.parseInt(env.getProperty("connection.pool.maxIdleTime")));
} catch (PropertyVetoException e) {
throw new RuntimeException(e);
}
return dataSource;
}
}
调度程序 Servlet 初始化程序文件
package com.nobalg.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class MvcSpringInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
// TODO Auto-generated method stub
return null;
}
@Override
protected Class<?>[] getServletConfigClasses() {
// TODO Auto-generated method stub
return new Class[]{AppConfig.class};
}
@Override
protected String[] getServletMappings() {
// TODO Auto-generated method stub
return new String[]{"/"};
}
}
Spring 安全配置文件:
package com.nobalg.config;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SpringSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private DataSource dataSource;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//auth.jdbcAuthentication().dataSource(dataSource);
auth.inMemoryAuthentication().withUser("Nobal").password("test@123").authorities("MANAGER");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.anyRequest()
.authenticated()
.and()
.formLogin()
.loginPage("/loginPage")
.loginProcessingUrl("/loginProcessing")
.usernameParameter("username")
.passwordParameter("password")
.permitAll();
}
}
Spring 安全初始化文件
package com.nobalg.config;
import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer;
public class SpringSecurityInitializer extends AbstractSecurityWebApplicationInitializer {
}
唯一的 Controller
package com.nobalg.controllers;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
@Controller
public class MainContoller {
@GetMapping("/loginPage")
public String showLoginForm(){
return "login";
}
}
和登录页面
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form:form method="POST" action="${pageContext.request.contextPath}/loginProcessing">
<p>Enter Username : <input type="text" placeholder="Enter Username" name="username"></p>
<p>Enter Password : <input type="password" placeholder="Enter Password" name="password"></p>
<p><input type="submit" value="LOG IN"></p>
</form:form>
</body>
</html>
最佳答案
将此添加为您的表单字段:
<input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
或者如果您想要其他方法 Spring Security JSP tag library :
您可以选择禁用默认启用的 csrf:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
}
使用passwordEncoder 添加此bean。
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
并将密码编码器设置为 auth:
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.passwordEncoder(this.passwordEncoder());
}
将需要UserDetailsService
的.loginProcessingUrl("/loginProcessing")
更改为.defaultSuccessUrl("/")
关于java - Spring : Always say forbidden - Status 403,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49715089/
在该人已经使用discord.js说过“;say”之后,我如何检查字符串是否不包含“;say”。 我想确保用户不会通过使用命令 ;say ;say ;say 或类似的命令来破坏我正在制作的机器人。 已
我正在尝试学习 Perl,我使用的是 OS-X 10.8.4 并拥有 Perl 版本: 这是为 darwin-thread-multi-2level 构建的 perl 5, version 12, s
无法解决问题:\我应该如何记录第二个参数“says”?因为 SonarQube 一次又一次地问我这个问题。 public class Dogs { private static final o
比如: 第一个数字是:1。 看着第一个数字你可以说1个1,那么第二个数字就是:11。 看着第二个数字你可以说2个1,即第三个数字是:21。 看着第三个
本文关键词:LeetCode,力扣,算法,算法题,外观数列,Count and Say,刷题群 题目地址:https://leetcode.com/problems/count-and-say/#/
我正在使用Laravel Framework做博客,并且已经准备好登录/注册和线程部分。如果您已登录,那么在我的Blog中您只能编辑一个线程。现在,我遇到的问题是,如果我已登录,则可以编辑和删除每个线
正在处理一些2015 AoC学习 clojure 的问题...下面的代码对于第 40 次迭代来说足够快,但在那之后很长时间就陷入了停滞。我与其他一些人的解决方案进行了比较,但我并不清楚为什么这么慢。我
在某些时候,我的 java 代码通过如下简单的一行启动了 Mac 操作系统的“say”命令: Runtime.getRuntime().exec("say -v Victoria -f/Users/u
我需要第二双眼睛看这个。只要其中一个条件(if 或 elsif)为真,我就会得到一个额外的换行符。我不想这样。 use strict; use warnings; use autodie; use f
在 OS X 的终端中,如果您键入“say”并按回车键,则该命令不会退出,并且系统会说出任何后续输入的内容(后跟回车键)。怎么才能达到这样的效果呢? 最佳答案 如果您输入 cat 并按回车键,该命令不
我有一个表单,我正在使用 JavaScript 来验证表单,所以如果我们将一个字段留空,它会提示“请输入您的姓名”。 如果我直接转到链接,它会完美运行。但我正在使用 iFrame 将其嵌入其他网站。当
我正在为 FreecodeCamp 编写一个“Simon Says”元素,该元素跟踪计算机的随机颜色选择以及用户单击响应以遵循亮起颜色的模式。 但是,我遇到了一个问题。 。 。当计算机随机运行选择时,
我发现这个页面对指针的解释如下: http://www.woyouxian.net/c/c0501.html int x = 1, y = 2, z[10]; int *ip; /*
我一直在研究指针。我发现声明指针的细微差别,如 int* x 或 int *x。但是,我一直认为 *x 是指向内存的实际值。所以当我读int *x = &a时,我把它读作“assign value a
我通过导入 speech_recognition 在 python 3 上运行语音到文本代码 我的程序停留在“说点什么”并显示 sudo jack_control start //terminal c
考虑以下代码: #include #include // Variadic version template void f(const Variadic&... variadic) { s
我认为下面的代码格式正确: template using IsSigned = std::enable_if_t >; template... > T myAbs( T val ); 也有人说它是病式
我正在用 PHP 为 twilio 编写代码,以便当我调用我的 twilio 号码时,它会调用另一个号码,当用户拿起它时,它会使用 say 号码向他们读一条消息。 我该怎么做?我找不到任何嵌套到拨号动
我正在玩 Scala By Example 开头的 QuickSort 示例并尝试将其调整为通用类型 A ,而不仅仅是 Int s。 到目前为止我的工作是 def sort[A new Y(i, -
我可以在 verb 中使用任何其他字符吗?帮助发音(假设我有太多选择,只能将它们全部录制为 MP3)。 到目前为止,我发现的只是帮助正确检测音节的连字符: Adgrok 发音为“Addbrooke”
我是一名优秀的程序员,十分优秀!