【发布时间】:2021-04-17 18:52:04
【问题描述】:
所以我有这个使用 Spring MVC 和 JSP 运行的遗留应用程序,从 mongo DB 读取
,我正在考虑将其替换为使用 Spring Boot 和 Angular JS 的现代应用程序
我不是在寻找一个框架,我的问题是关于身份验证的更多概念,以及它如何在 Angular 和 Spring Boot 之间工作。
我不想使用第三方进行身份验证,我想继续使用我的内部数据库用户和密码。
我还有一个客户端需要先注册的 REST API,然后在绕过角度和身份验证的每个请求上发送一个令牌。
所以在过去(古老的 j2ee)我有 Servlet 过滤器,这个过滤器对任何请求都运行,它检查会话是否经过身份验证,如果没有 - 它会转发到身份验证页面,然后将结果存储在会话中.
类似这样的东西:
@WebFilter("/*")
public class LoginFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
HttpSession session = request.getSession(false);
String loginURI = request.getContextPath() + "/login";
boolean loggedIn = session != null && session.getAttribute("user") != null;
boolean loginRequest = request.getRequestURI().equals(loginURI);
if (loggedIn || loginRequest) {
chain.doFilter(request, response);
} else {
response.sendRedirect(loginURI);
}
}
// ...
}
如何用 Angular JS 做同样的认证机制?
servlet 中的过滤器等价于什么?
Angular 是客户端渲染,如何保障呢?
感谢您的任何意见!
【问题讨论】:
-
从 spring security 提供的 formLigin 开始,它将为您提供基于会话的身份验证。在 Angular 中实现自定义表单。