首页 > 其他分享 >SpringBoot入门系列:Spring Security 和 Angular JS(1)

SpringBoot入门系列:Spring Security 和 Angular JS(1)

时间:2022-12-14 15:35:50浏览次数:83  
标签:SpringBoot Spring cloak 应用程序 ng JS Angular


Spring Security 和 Angular JS系列,是一文的解析。

受保护的单页面应用程序

这一节我们要展示将Spring Security、Spring Boot和Angular JS放在一起使用的一些不错的特性,它们能提供令人愉快且安全的用户体验。对于Spring和Angular JS的初学者而言易于上手,而且也能为专家们所用。这实际上是有关于Spring Security和Angular JS的一系列文章的首篇,成功地对新特性进行了逐一的阐述。我们将会在

​​第二阶段​​以及后续阶段中对应用程序进行提升,不过伺此后的主要变化是架构上的,而不是功能方面的。


Spring 和单页面应用程序

HTML5,丰富的基于浏览器的特性,以及“单页面应用程序”对于现代开发者而言都是极具价值的工具,但任何具备实际意义的交互都将涉及到后台服务器,静态内容(HTML, CSS 和 JavaScript)也是如此,因而我们将需要一个后台服务器。后台服务器可以扮演大量的角色:托管静态内容,有时(不过如今不是那么频繁了)渲染动态的HTML,对用户进行认证,为需要受到保护的资源提供安全访问机制,还有(最后但并不代表最不重要的一个)就是在浏览器中通过HTTP和JSON(有时也被称作REST API)同JavaScript进行交互。

Spring 一向是用来构建后台功能(特别是在企业级领域中)的流行技术,而随着 ​​Spring Boot​​ 这样的事物的出现,这方面的工作变得从未如此简单。让我们来看看如何使用Spring Boot、Angular JS以及Twitter 的Bootstrap 从零开始去构建一个新的单页面应用程序。选择这一技术栈并没有特殊原因,不过是因为相当流行,尤其是核心Spring在企业级Java市场深受青睐, 因此值得将其作为起点。

创建一个新工程

1、在浏览器中打开http://start.spring.io


Artifact:spring-security-and-angular-js-basic

Description:Spring Security Angular Samples

com.spring.security.angularjs

勾选Security、Web

2、生成工程,下载到本地,再解压,再统统Existing Maven Project导入eclipse

导入Angular JS项目依赖

在src/main/resources/static下,拷贝入Angular JS的一些普通依赖文件

添加一个主页

单页面应用程序的核心就是一个静态的"index.html", 所以我们首先来创建一个 (在 "src/main/resources/static" 或者 "src/main/resources/public" 中):


<!doctype html>
<html>
<head>
<title>Hello AngularJS</title>
<link href="bootstrap/bootstrap.min.css" rel="stylesheet">
<style type="text/css">
[ng\:cloak], [ng-cloak], .ng-cloak {
display: none !important;
}
</style>
</head>

<body ng-app="hello">
<div class="container">
<h1>Greeting</h1>
<div ng-controller="home" ng-cloak class="ng-cloak">
<p>The ID is {{greeting.id}}</p>
<p>The content is {{greeting.content}}</p>
</div>
</div>
<script src="angular/angular.min.js" type="text/javascript"></script>
<script src="js/hello.js"></script>
</body>
</html>

hello.js


angular.module('hello', [])
.controller('home', function($scope) {
$scope.greeting = {id: 'xxx', content: 'Hello World!'}
})

 应用程序的名称为 "hello",而它有一个空的(而且是多余的) "配置(config)", 还有一个叫做“home”的空“控制器(controller)"。"home" 控制器会在我们载入”index.html“时被调用,因为我们已经用 ng-controller="home" 对内容div进行了装饰。
注意我们将一个神奇的 scope注入到了控制器函数(Angular通过命名约定来做依赖注入,并且会对函数参数的名称进行识别)注入了进去。scope 随后会用于函数中去设置控制器所负责的UI元素的内容和行为。
如果你在 "src/main/resources/static/js"下面添加那个文件,你的app现在就会是安全并且实用的,它会显示 "Hello World!"。这个是有HTML中的Angular实用占位符 {{greeting.id}} 以及 {{greeting.content}} 来进行渲染的。

主页的特性

  • 一些在<head>中引入的CSS,bootstrap/bootstrap.min.css, 还有一个定义在​​"ng-cloak"​​类中的内联样式表。
  • "ng-cloak" 类被应用于内容<div>,如此内容就可以一直隐藏知道Angular JS有机会对其进行处理 (这就在初始化页面加载期间的"闪烁")。
  • <body> 被标记为 ng-app="hello" ,其意义就是我们需要定义一个JavaScript模块,Angular就会将其识别为一个叫做"hello"的应用程序。
  • 所有的CSS类(除开"ng-cloak"之外的)都来自​​Twitter Bootstrap​​。只要我们正确设置好样式表,它们就能让东西变得美观起来。
  • 问候语的内容是使用双中括弧对来标识的, 例如 {{greeting.content}},这样稍后就会有Angular (根据外围的<div>上的ng-controller指令,使用的是一个叫做“home" 的 "控制器")对其进行过滤。
  • Angular JS (以及Twitter Bootstrap) 是在<body>的底部引入的,那样浏览器就可以在处理之前先处理所有的HTML。
  • 我们还引入了一个单独的 "hello.js",这里是我们定义应用程序行为的地方.

运行应用程序

1、在exlips运行或者在在命令行上

​mvn spring-boot:run,这时打印日志入图:​


SpringBoot入门系列:Spring Security 和 Angular JS(1)_html


2、在浏览器中输入http://localhost:8080/index.html,当你加载主页时,应该会遇到一个浏览器对话框,要求输入用户名和密码 (用户名就是 "user",而密码则会在启动时打印在控制台日志中,上图的红字)。如图

SpringBoot入门系列:Spring Security 和 Angular JS(1)_html_02

用户名输入:user,密码输入console中Using default security password的,之后如下

SpringBoot入门系列:Spring Security 和 Angular JS(1)_html_03

小结

       工程仅仅依赖spring-boot-starter-security,即带来有一定的安全管理。


Spring Security 和 Angular JS系列,是对一文的解析。

受保护的单页面应用程序

这一节我们要展示将Spring Security、Spring Boot和Angular JS放在一起使用的一些不错的特性,它们能提供令人愉快且安全的用户体验。对于Spring和Angular JS的初学者而言易于上手,而且也能为专家们所用。这实际上是有关于Spring Security和Angular JS的一系列文章的首篇,成功地对新特性进行了逐一的阐述。我们将会在

​​第二阶段​​以及后续阶段中对应用程序进行提升,不过伺此后的主要变化是架构上的,而不是功能方面的。


Spring 和单页面应用程序

HTML5,丰富的基于浏览器的特性,以及“单页面应用程序”对于现代开发者而言都是极具价值的工具,但任何具备实际意义的交互都将涉及到后台服务器,静态内容(HTML, CSS 和 JavaScript)也是如此,因而我们将需要一个后台服务器。后台服务器可以扮演大量的角色:托管静态内容,有时(不过如今不是那么频繁了)渲染动态的HTML,对用户进行认证,为需要受到保护的资源提供安全访问机制,还有(最后但并不代表最不重要的一个)就是在浏览器中通过HTTP和JSON(有时也被称作REST API)同JavaScript进行交互。

Spring 一向是用来构建后台功能(特别是在企业级领域中)的流行技术,而随着 ​​Spring Boot​​ 这样的事物的出现,这方面的工作变得从未如此简单。让我们来看看如何使用Spring Boot、Angular JS以及Twitter 的Bootstrap 从零开始去构建一个新的单页面应用程序。选择这一技术栈并没有特殊原因,不过是因为相当流行,尤其是核心Spring在企业级Java市场深受青睐, 因此值得将其作为起点。

创建一个新工程

1、在浏览器中打开http://start.spring.io


Artifact:spring-security-and-angular-js-basic

Description:Spring Security Angular Samples

com.spring.security.angularjs

勾选Security、Web

2、生成工程,下载到本地,再解压,再统统Existing Maven Project导入eclipse

导入Angular JS项目依赖

在src/main/resources/static下,拷贝入Angular JS的一些普通依赖文件

添加一个主页

单页面应用程序的核心就是一个静态的"index.html", 所以我们首先来创建一个 (在 "src/main/resources/static" 或者 "src/main/resources/public" 中):


<!doctype html>
<html>
<head>
<title>Hello AngularJS</title>
<link href="bootstrap/bootstrap.min.css" rel="stylesheet">
<style type="text/css">
[ng\:cloak], [ng-cloak], .ng-cloak {
display: none !important;
}
</style>
</head>

<body ng-app="hello">
<div class="container">
<h1>Greeting</h1>
<div ng-controller="home" ng-cloak class="ng-cloak">
<p>The ID is {{greeting.id}}</p>
<p>The content is {{greeting.content}}</p>
</div>
</div>
<script src="angular/angular.min.js" type="text/javascript"></script>
<script src="js/hello.js"></script>
</body>
</html>

hello.js


angular.module('hello', [])
.controller('home', function($scope) {
$scope.greeting = {id: 'xxx', content: 'Hello World!'}
})

 应用程序的名称为 "hello",而它有一个空的(而且是多余的) "配置(config)", 还有一个叫做“home”的空“控制器(controller)"。"home" 控制器会在我们载入”index.html“时被调用,因为我们已经用 ng-controller="home" 对内容div进行了装饰。
注意我们将一个神奇的 scope注入到了控制器函数(Angular通过命名约定来做依赖注入,并且会对函数参数的名称进行识别)注入了进去。scope 随后会用于函数中去设置控制器所负责的UI元素的内容和行为。
如果你在 "src/main/resources/static/js"下面添加那个文件,你的app现在就会是安全并且实用的,它会显示 "Hello World!"。这个是有HTML中的Angular实用占位符 {{greeting.id}} 以及 {{greeting.content}} 来进行渲染的。

主页的特性

  • 一些在<head>中引入的CSS,bootstrap/bootstrap.min.css, 还有一个定义在​​"ng-cloak"​​类中的内联样式表。
  • "ng-cloak" 类被应用于内容<div>,如此内容就可以一直隐藏知道Angular JS有机会对其进行处理 (这就在初始化页面加载期间的"闪烁")。
  • <body> 被标记为 ng-app="hello" ,其意义就是我们需要定义一个JavaScript模块,Angular就会将其识别为一个叫做"hello"的应用程序。
  • 所有的CSS类(除开"ng-cloak"之外的)都来自​​Twitter Bootstrap​​。只要我们正确设置好样式表,它们就能让东西变得美观起来。
  • 问候语的内容是使用双中括弧对来标识的, 例如 {{greeting.content}},这样稍后就会有Angular (根据外围的<div>上的ng-controller指令,使用的是一个叫做“home" 的 "控制器")对其进行过滤。
  • Angular JS (以及Twitter Bootstrap) 是在<body>的底部引入的,那样浏览器就可以在处理之前先处理所有的HTML。
  • 我们还引入了一个单独的 "hello.js",这里是我们定义应用程序行为的地方.

运行应用程序

1、在exlips运行或者在在命令行上

​mvn spring-boot:run,这时打印日志入图:​


SpringBoot入门系列:Spring Security 和 Angular JS(1)_html


2、在浏览器中输入http://localhost:8080/index.html,当你加载主页时,应该会遇到一个浏览器对话框,要求输入用户名和密码 (用户名就是 "user",而密码则会在启动时打印在控制台日志中,上图的红字)。如图

SpringBoot入门系列:Spring Security 和 Angular JS(1)_html_02

用户名输入:user,密码输入console中Using default security password的,之后如下

SpringBoot入门系列:Spring Security 和 Angular JS(1)_html_03

小结

       工程仅仅依赖spring-boot-starter-security,即带来有一定的安全管理。

标签:SpringBoot,Spring,cloak,应用程序,ng,JS,Angular
From: https://blog.51cto.com/u_15912341/5937199

相关文章

  • SpringBoot入门系列:Spring Security 和 Angular JS(2)
    添加动态的内容目前我们已经有了一个应用程序,硬编码了一句问候语在里面。这对学习如何把这些凑到一起很有帮助,不过实际上我们期望的是来自于后台服务器的内容,因此我们可以创......
  • SpringBoot入门系列: JPA mysql(五)
    一,准备工作,建立spring-boot-sample-mysql工程1、http://start.spring.io/    A、Artifact中输入spring-boot-sample-mysql    B、勾选Web下的web    C、勾选......
  • SpringBoot入门:Hello World(一)
       跟随SpringBoot的文档(http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-documentation)学习,前后几章关联才调通代码,煞是痛苦,在......
  • execCommand(), js
    execCommand()方法是执行一个对当前文档,当前选择或者给出范围的命令。处理Html数据时常用document.execCommand(sCommand[,交互方式,动态参数])sCommand:sCommand为指令......
  • 关于在springboot中的controller引入不了service报错解决办法
    关于在springboot中的controller引入不了service报错解决办法报错如下:不仅是controller一层出现问题,每一层都是相同的问题解决步骤:1.当出现了这个错误不要慌,首先清......
  • spring boot创建多线程定时任务
    @Component@EnableScheduling//1.开启定时任务@EnableAsync//2.开启多线程publicclassMultithreadScheduleTask{@Async@Schedule......
  • spring-cloud-alibaba-整合spring-clouid-gateway-3.1.4
    spring-cloud-alibaba-整合spring-clouid-gateway-3.1.4spring-cloud-alibaba-整合spring-clouid-gateway-3.1.4前言版本说明引入spring-cloud-gatewayspring-cloud......
  • SpringBoot(五):JSR303校验
    一、什么是JSR303校验JSR,是JavaSpecificationRequests的缩写,意思是Java规范提案,是指向JCP(JavaCommunityProcess)提出新增一个标准化技术规范的正式请求。JCP(JavaCo......
  • js中Math.floor、Math.ceil、Math.round和parseInt小数取整小结
    虽然知道结果都可以返回一个整数,但是四者的区别尤其是关于-0.5的取整情况貌似还是需要注意一下一、Math.floor(向下取整)作用:返回小于等于参数的最大整数。eg:Math.floor(5......
  • SpringCloud-Nacos学习笔记
    spring-cloud-alibaba版本说明https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8ESpringBoot2.4+和以下版本之间变化较大......