java - 配置 SpringSecurity 以使用 JWT
问题描述
我有一个受 SpringSecurity 3.2.2 保护的个人 Web 项目(Struts-Hibernate),我一直在阅读有关 JWT 的内容,所以我想改进我的项目以使用它,我一直在阅读一些教程,但我不知道如何去做吧。
现在,我使用 springSecurity xml 文件加载配置,其中一个名为 CustomProviderAuthentication 的类负责根据情况抛出异常或返回 UsernamePasswordAuthenticationToken(来自 Spring)。
这是我的 springSecurity.xml:
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/security"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<context:component-scan base-package="com.test.authentication.*" />
<http auto-config="true">
<intercept-url pattern="/security/**" access="ROLE_Usuario" />
<intercept-url pattern="/jsp/security/**" access="ROLE_Usuario" />
<form-login always-use-default-target="true"
login-page="/loginAction" default-target-url="/security/adminPanel"
authentication-failure-url="/loginAction?auth=failure" />
</http>
<!-- <beans:bean id="customUserDetailService" class="com.test.authentication.CustomAuthenticationProvider"/> -->
<authentication-manager>
<authentication-provider ref="customAuthenticationProvider"/>
</authentication-manager>
<beans:bean id="customAuthenticationProvider" class="com.test.authentication.CustomAuthenticationProvider"/>
我的疑问是:
1) 用户登录后,我应该在哪里返回生成的令牌?
2) 如何配置 spring 安全过滤器以使用令牌而不是会话?
- 3) 如果令牌不存在,我如何配置 Spring 安全过滤器以重定向到登录?
提示表示赞赏。
解决方案
推荐阅读
- scala - 在火花流中聚合后努力处理重复数据删除
- chronicle - 将消息刷新到 Chronicle Queue
- javascript - 有没有办法改变锚的行为?
- flask - Celery CRITICAL/MainProcess] 不可恢复的错误:AttributeError("'float' object has no attribute 'items'",)
- java - HTTPS 连接不安全
- clojure - 如何在 lein 项目中编译不在“src”下的 clojure 模块
- javascript - 点击事件绑定的奇怪行为;事件未触发
- c++ - 从文件夹中多次读取
- vba - 当用户退出工作簿而不保存它时,有没有办法将其重置为原始屏幕尺寸?
- .net-core - 发布 PowershellCore 二进制模块