登录后重定向到自定义网址
Posted
技术标签:
【中文标题】登录后重定向到自定义网址【英文标题】:Redirect to custom url after login 【发布时间】:2020-04-08 19:51:39 【问题描述】:我在我的应用程序中使用 Spring security + Angular。 并在 spring-security.xml 中指定以下表单登录
<security:form-login
always-use-default-target="true"
login-page="/login"
default-target-url="/login"
login-processing-url="/perform_login"
authentication-failure-url="/login?error"
username-parameter="username"
password-parameter="password"
/>
这会将用户重定向到正常工作的登录页面。
但现在我想增强它以记住登录前和成功登录后重定向到该页面的 url
预期场景
-
应用程序已注销
用户输入网址:http://WEB-SITE/ReportModule/#/report
用户被重定向到登录页面
一旦用户成功登录,它就会被重定向到http://WEB-SITE/ReportModule/#/report
尝试过的解决方案
尝试将 url 保存到会话中,并在登录后重定向用户。 此解决方案中的问题是当输入到浏览器应用程序的 http://WEB-SITE/ReportModule/#/report 被重定向到 http://WEB-SITE/login/#/report 时,缺少部分 url (ReportModule/#/report) 来存储。
有什么办法可以做到这一点
答案:
通过 AuthenticationSuccessHandler 和 useReferer 找到解决方案
<bean id="AuthenticationSuccessHandler"
class="org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler">
<property name="useReferer" value="true"/>
</bean>
<security:form-login
always-use-default-target="true"
login-page="/login"
default-target-url="/login"
login-processing-url="/perform_login"
authentication-failure-url="/login?error"
username-parameter="username"
password-parameter="password"
authentication-success-handler-ref="AuthenticationSuccessHandler"
/>
【问题讨论】:
你试过HTTP referer header吗?它会向您显示原始呼叫开始的位置 【参考方案1】:您好,我不确定您保护 url 的前端解决方案。我假设您正在使用保护来重定向用户。 从'@angular/core'导入可注射; 从'@angular/router'导入路由器,CanActivate,ActivatedRouteSnapshot,RouterStateSnapshot;
@Injectable() 导出类 AuthGuard 实现 CanActivate
constructor(private router: Router)
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot)
if (localStorage.getItem('currentUser'))
// logged in so return true
return true;
// not logged in so redirect to login page with the return url and return false
this.router.navigate(['login'], queryParams: returnUrl: state.url );
return false;
this.router.navigate(['login'], queryParams: returnUrl: state.url );这就是你要找的。p>
【讨论】:
以上是关于登录后重定向到自定义网址的主要内容,如果未能解决你的问题,请参考以下文章
php [Incsub支持] - 在新票提交后重定向到自定义感谢页面。
Laravel 8 Jetstream如何在重置密码后将用户重定向到自定义路由