这篇文章主要围绕带有AngularJS的SpringBoot和angular+springboot展开,旨在为您提供一份详细的参考资料。我们将全面介绍带有AngularJS的SpringBoot的优缺
这篇文章主要围绕带有AngularJS的Spring Boot和angular+springboot展开,旨在为您提供一份详细的参考资料。我们将全面介绍带有AngularJS的Spring Boot的优缺点,解答angular+springboot的相关问题,同时也会为您带来AngularJS + SpringBoot无法解析String的诡异问题、angularjs – spring Boot和Angular JS:处理身份验证的最佳方法是什么?、angularjs – 如何将常规用户名/密码登录与第三方社交登录集成为Spring Boot Angular单页Web应用程序?、angularjs – 带有Angular 2的Azure AD B2C的实用方法。
本文目录一览:- 带有AngularJS的Spring Boot(angular+springboot)
- AngularJS + SpringBoot无法解析String的诡异问题
- angularjs – spring Boot和Angular JS:处理身份验证的最佳方法是什么?
- angularjs – 如何将常规用户名/密码登录与第三方社交登录集成为Spring Boot Angular单页Web应用程序?
- angularjs – 带有Angular 2的Azure AD B2C
带有AngularJS的Spring Boot(angular+springboot)
我有一个Spring
Boot项目,使用Jersey作为我的REST服务,并使用AngularJS进行前端开发。当我在不使用任何控制器的情况下运行它并转到index.html(位于
resource / static / index.html中 )时,它工作正常。当我添加一个控制器时,它呈现为字符串“
index.html”作为输出。Spring Boot配置:
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.EnableAutoConfiguration;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @ComponentScan(basePackages = {"com.cst.interfaces","com.cst.configuration","com.cst.application","com.cst.application.implmentation"}) @EnableAutoConfiguration public class ApplicationConfiguration { public static void main(String args[]) throws Exception{ SpringApplication.run(ApplicationConfiguration.class, args); } public ServletRegistrationBean jerseyServlet(){ ServletRegistrationBean register = new ServletRegistrationBean(new ServletContainer(),"/*"); register.addInitParameter(ServletProperties.JAXRS_APPLICATION_CLASS, JerseyInitalize.class.getName()); return register; }}
JerseyConfiguration:
import org.glassfish.jersey.server.ResourceConfig;import org.springframework.stereotype.Component;@Componentpublic class JerseyInitalize extends ResourceConfig{ public JerseyInitalize(){ super(); this.packages("com.cst.interfaces"); }}
控制器类别:
import javax.ws.rs.GET;import javax.ws.rs.Path;import javax.ws.rs.Produces;import org.springframework.web.bind.annotation.RestController;@RestController@Path("/home")public class HomeResource { @GET @Produces("application/json") public String getString(){ return "index.html"; }}
答案1
小编典典这是因为你标注了你的控制器@RestController
,这是一个简写为@Controller
用@ResponseBody
。后一个注释指示控制器将输出原样直接呈现到响应中。
使用@Controller
的控制器,是 不是 REST风格代替。
AngularJS + SpringBoot无法解析String的诡异问题
项目是开发完后写完用户手册了,然后突然之间就异常了。
异常的信息是,AngularJS请求后台接口,后台接口返回String格式,比如说,查询某一个字段的内容,直接返回 return "hhhhhh"; angularjs就会解析说JSON格式问题= =。
整个controller是用@RestController 注解的。其他基本类型,对象,集合什么的返回参数都没有问题,只有String类型的出问题了。。。。
哦,对了,$http.get 请求还是200状态,看浏览器调试是返回数据了= =。
(我目前写了个Common的model,返回去了。但是不知道这个原因是啥,找了一上午唉。。。。有遇到的求告知。)
angularjs – spring Boot和Angular JS:处理身份验证的最佳方法是什么?
什么是处理身份验证的最佳方法???
我以前从未使用过Spring安全性,我找不到使用数据库(用户和角色)的例子.即使我有html页面,我也使用spring security吗?
我想要的是当用户(来自我的数据库)登录时,他会找到他的个人数据.我的意思是例如在facebook主页中,用户的名字显示在顶部栏上,他可以看到他的个人资料……
此外,我的菜单的一部分必须仅显示给我的管理员用户.那可能吗 ?
如果有人可以告诉我要遵循的步骤或给我一个好的教程链接,我会很感激.我迷路了
解决方法
我个人的建议是使用Spring Security表格登录,它支持基于角色的身份验证.当您使用angularjs和基于角色的身份验证时,自定义菜单显示并不难. (但我担心你将无法拥有100%的HTML解决方案 – 可能必须使用jsp if语句.)
另一种选择是,如果您将jboss作为应用程序服务器,则可以使用login-config.xml更改权限
angularjs – 如何将常规用户名/密码登录与第三方社交登录集成为Spring Boot Angular单页Web应用程序?
我的旧登录流使用grant_type = password POST调用/ oauth / token端点来获取Bearer令牌.代表用户的所有进一步API调用将包括Bearer令牌作为“授权”http头.
现在我需要整合社交登录(脸书,推特等),这意味着我没有用户名/密码来生成令牌,所以我不知道如何让它工作.
我一直在使用以下两个教程作为我的模板:
Spring Security and Angular JS
Spring Boot and OAuth
在第一个教程的oauth-vanilla示例中,用户名passwork登录流程会显示授权页面.但我想拥有传统的用户名/密码表单登录体验(直接登录用户而不是显示授权页面).
在第二个教程中,在登录facebook之后,我想使用facebook id查找我的内部用户数据库并创建一个新用户(如果不存在)并以用户身份登录.并使用内部db用户的身份和权限来授权将来对我的API服务器的API调用.
我在at处有一个剥离的样本
https://github.com/dingquan/spring-angular-oauth
我可以对/ oauth / token端点进行POST调用,并使用返回的令牌对我的protected / api / blogs端点进行进一步的api调用.但我还没弄明白如何使以下事情奏效:
>将创建会话cookie的用户名/密码登录,因此我不需要发送授权承载令牌以用于将来对资源端点的API调用
>在facebook登录后(facebook登录链接在用户名/密码登录表单下),对我的端点的调用仍然失败,并显示401错误(我有一个“测试”按钮,可以调用/ api / blogs,你可以点击在它上面看行为).那么我错过了什么让API调用成功?
===更新===
只是为了澄清.以下是我要实现的目标:
>多种身份验证方式(传统用户名/密码,第三方oauth登录如facebook,未来可能是手机号码短信代码)
>我们确实需要我们自己的DB支持的用户模型来存储其他用户属性,纯社交登录是不够的
>社交登录需要隐含.意味着用户在通过第三方(Facebook等)登录后,不需要手动在我们的系统中创建用户帐户.我们不只是抓住用户的社交个人资料数据来预先填写注册表单.如果没有现有的db用户与给定的外部社交帐户关联,我们希望在场景后自动创建新的DB用户.即如果用户通过Facebook登录,则无需输入用户名/密码.通过Facebook验证将自动将用户登录到我们的系统中,用户应该能够在登录Facebook后访问受限资源.
有一些混乱,我可能会要求人们将他们的Facebook用户名/密码放在我的应用程序托管的登录表单中,我将代表用户登录facebook.这不是我要求的.
解决方法
以下是我使用Facebook作为授权服务器所做的工作.
a)从UserServiceImpl中删除clientId和authServer.否则,您将被迫配置不需要的授权服务器.
b)完全删除AuthorizationServerConfiguration.
c)将@EnableWebSecurity和@ EnableOAuth2Sso添加到您的MainConfiguration.
d)将MainConfiguration :: configure更改为
http .logout().logoutSuccessUrl("/").permitAll().and() .authorizeRequests().antMatchers("/","/login","/home.html").permitAll() .anyRequest().authenticated() .and().csrf().csrftokenRepository(CookieCsrftokenRepository.withHttpOnlyFalse());
e)从MainConfiguration中删除除嵌套类AuthenticationSecurity之外的所有其他内容.
f)将ResourceServerConfiguration :: configure(HttpSecurity)更改为
http.antMatcher("/api/**").authorizeRequests().anyRequest().authenticated();
f)从ResourceServerConfiguration中删除属性tokenStore和方法ResourceServerConfiguration :: configure(ResourceServerSecurityConfigurer).
g)从application.yml中删除配置块安全性和Facebook.而是添加这个
security: oauth2: client: client-id: <CLIENT_ID> token-name: oauth_token authentication-scheme: query client-authentication-scheme: form access-token-uri: https://graph.facebook.com/oauth/access_token user-authorization-uri: https://www.facebook.com/dialog/oauth resource: user-info-uri: https://graph.facebook.com/me client-id: <CLIENT_ID> client-secret: <CLIENT_SECRET> token-type: code
h)在index.html中更改< a href =“#/ login”> login< / a>到< a href =“/ login”>登录< / a>.
i)用此one替换hello.js的内容.
But I’d like to have the Traditional username/password form login experience (log user in directly instead of showing the Authorization page).
我永远不会使用需要我的凭据的网站,而不会将我重定向到原点!我不认识你,你被怀疑是一个网络钓鱼网站.
你应该重新考虑你的决定.
顺便说一下,我用这些更改创建了一个拉取请求.
angularjs – 带有Angular 2的Azure AD B2C
>只要我们可以使用id_token每小时到期并且必须让用户每次都回到AAD,是否可以使用角度为js的azure ad b2c?
>如果没有,可以使用角度为js的graph api吗? (可能是一个多余的问题)
>如果我们需要返回声明和id_token,我们可以在制作中使用azure ad b2c吗?
任何帮助/源代码都非常感谢.
解决方法
我没有看到任何你不应该在生产中使用Azure B2c的原因.它在一般可用性和生产准备就绪.
由于Azure AD B2C是Open ID的实现,因此您可以从获取Open ID概述中受益.互联网上可能有资源.这是一个快速概述视频.
https://www.youtube.com/watch?v=BdKmZ7mPNns
今天关于带有AngularJS的Spring Boot和angular+springboot的介绍到此结束,谢谢您的阅读,有关AngularJS + SpringBoot无法解析String的诡异问题、angularjs – spring Boot和Angular JS:处理身份验证的最佳方法是什么?、angularjs – 如何将常规用户名/密码登录与第三方社交登录集成为Spring Boot Angular单页Web应用程序?、angularjs – 带有Angular 2的Azure AD B2C等更多相关知识的信息可以在本站进行查询。
本文标签: