1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > SpringBoot+SpringSecurity+Angular6简单的登录控制权限控制Demo(二)

SpringBoot+SpringSecurity+Angular6简单的登录控制权限控制Demo(二)

时间:2024-04-07 06:47:26

相关推荐

SpringBoot+SpringSecurity+Angular6简单的登录控制权限控制Demo(二)

SpringBoot+SpringSecurity+Angular6简单的登录控制权限控制Demo(二)

SpringBoot+SpringSecurity+Angular6简单的登录控制权限控制Demo(二)1.angularJS 与 angular 的区别2.项目初始化3.页面设计4.一级路由,登录和index组件5.Header和NavBar(1)Header(2)NavBar(3) index组件(4)效果(5)添加其他组件 6.login组件6.结语

SpringBoot+SpringSecurity+Angular6简单的登录控制权限控制Demo(二)

接上一篇 /cepto/article/details/85331386

有了后端服务器,接下来就是编写我们的angular6前端项目了

1.angularJS 与 angular 的区别

angularJS是初代 angular是2代以后的称呼,他们的区别可以用两个不同的框架来形容了,所以新手同学一定要注意区别,很多东西不能通用。

PS.编写angular项目老是搜到angularJS的资源真是很难受。

2.项目初始化

我的开发环境是先安装nvm再用nvm安装node9再用npm安装angular6

有了环境后开始创建项目。

这里我的样式单选用了scss可以简化css编写且样式结构更清晰。

[zz@zz-pc security-front]$ ng new security-front --style=scss

然后安装jq和bootstrap

[zz@zz-pc security-front]$ npm i jquery bootstrap

安装好后需要再angular.json中配置一下才能生效

"styles": ["src/styles.scss","./node_modules/bootstrap/dist/css/bootstrap.css"],"scripts": ["./node_modules/jquery/dist/jquery.js","./node_modules/bootstrap/dist/js/bootstrap.js"]

接下来把全局的样式重置一下

styles.scss

/* You can add global styles to this file, and also import other style files *//* /eric/tools/css/reset/v2.0 | 0126License: none (public domain)*/html, body, div, span, applet, object, iframe,h1, h2, h3, h4, h5, h6, p, blockquote, pre,a, abbr, acronym, address, big, cite, code,del, dfn, em, img, ins, kbd, q, s, samp,small, strike, strong, sub, sup, tt, var,b, u, i, center,dl, dt, dd, ol, ul, li,fieldset, form, label, legend,table, caption, tbody, tfoot, thead, tr, th, td,article, aside, canvas, details, embed,figure, figcaption, footer, header, hgroup,menu, nav, output, ruby, section, summary,time, mark, audio, video {margin: 0;padding: 0;border: 0;font-size: 100%;font: inherit;vertical-align: baseline;}/* HTML5 display-role reset for older browsers */article, aside, details, figcaption, figure,footer, header, hgroup, menu, nav, section {display: block;}body {line-height: 1;}ol, ul {list-style: none;}blockquote, q {quotes: none;}blockquote:before, blockquote:after,q:before, q:after {content: '';content: none;}table {border-collapse: collapse;border-spacing: 0;}

这样我们的项目初始化工作就做好了。

3.页面设计

对应路由关系

4.一级路由,登录和index组件

首先添加index和login两个组件

[zz@zz-pc security-front]$ ng g c page/login[zz@zz-pc security-front]$ ng g c page/index

然后添加路由模块

[zz@zz-pc security-front]$ ng g m app-routing --flat --module=app

flat表示不为路由新建单独的文件夹,–module=app表示自动注册到根模块中

app-routing.module.ts

import {NgModule} from '@angular/core';import {CommonModule} from '@angular/common';import {LoginComponent} from './page/login/ponent';import {IndexComponent} from './page/index/ponent';import {RouterModule, Routes} from "@angular/router";const appRoutes: Routes =[{path: '',component: IndexComponent, },{path: 'login',component: LoginComponent},];@NgModule({imports: [CommonModule,RouterModule.forRoot(appRoutes)],exports: [RouterModule], // 记得一定要添加这个导出语句declarations: []})export class AppRoutingModule {}

路由模块添加完成后记得把根视图替换成下面代码

ponent.html

<router-outlet></router-outlet>

接下来测试一下

到这里我们的一级路由和其基础组件就完成了

5.Header和NavBar

头部和导航组件是从bootstrap官方文档copy过来的,毕竟美观不是我们的主要目的。

[zz@zz-pc security-front]$ ng g c component/header[zz@zz-pc security-front]$ ng g c component/navbar

(1)Header

ponent.html

<nav class="navbar navbar-dark bg-dark"><div class="container"><a class="navbar-brand" href="#"><img src="../../../assets/img/bootstrap-solid.svg" width="30" height="30" class="d-inline-block align-top"alt="">Bootstrap</a><div class="form-inline sign-in-up"><a href="javascript:void(0)">登出</a></div></div></nav>

ponent.scss

.sign-in-up{color: white;a{color: white;padding: 0 5px;}}

(2)NavBar

ponent.html

<div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical"><a class="nav-link active" id="v-pills-home-tab" data-toggle="pill" routerLink="/home" role="tab"aria-controls="v-pills-home" aria-selected="true">Home</a><a class="nav-link" id="v-pills-profile-tab" data-toggle="pill" routerLink="/profile" role="tab"aria-controls="v-pills-profile" aria-selected="false">Profile</a><a class="nav-link" id="v-pills-messages-tab" data-toggle="pill" routerLink="/messages" role="tab"aria-controls="v-pills-messages" aria-selected="false">Messages</a><a class="nav-link" id="v-pills-settings-tab" data-toggle="pill" routerLink="/settings" role="tab"aria-controls="v-pills-settings" aria-selected="false">Settings</a></div>

(3) index组件

头部和导航是index组件的一部分,所以我在index组件中规划了他们的位置

ponent.html

<app-header></app-header><div class="container"><div class="row"><div class="col-2"><app-navbar></app-navbar></div><div class="col-10"><div class="tab-content"><!--二级路由的站位标签--><router-outlet></router-outlet></div></div></div></div>

(4)效果

最后大概是个这个效果,

(5)添加其他组件

[zz@zz-pc security-front]$ ng g c page/home[zz@zz-pc security-front]$ ng g c page/profile[zz@zz-pc security-front]$ ng g c page/message[zz@zz-pc security-front]$ ng g c page/setting

在路由中添加这些组件的路由,这些组件将渲染在上节index组件中的二级路由站位标签中

app-routing.module.ts

import {NgModule} from '@angular/core';import {CommonModule} from '@angular/common';import {RouterModule, Routes} from "@angular/router";import {LoginComponent} from "./page/login/ponent";import {IndexComponent} from "./page/index/ponent";import {HomeComponent} from "./page/home/ponent";import {ProfileComponent} from "./page/profile/ponent";import {MessagesComponent} from "./page/messages/ponent";import {SettingsComponent} from "./page/settings/ponent";import {LoginGuard} from "./auth/login.guard";const appRoutes: Routes =[{path: '',component: IndexComponent,children: [{path: 'home',component: HomeComponent},{path: 'profile',component: ProfileComponent},{path: 'messages',component: MessagesComponent},{path: 'settings',component: SettingsComponent},]},{path: 'login',component: LoginComponent},{path: '**',component: LoginComponent}];@NgModule({imports: [CommonModule,RouterModule.forRoot(appRoutes)],exports: [RouterModule],declarations: []})export class AppRoutingModule {}

6.login组件

登录组件也引用了一些bootstrap的原生样式

ponent.html

<div class="container"><!-- Content here --><div class="card my-card" style="width: 18rem;"><h1><b>MY-SYS</b></h1><div class="form-group"><label for="username">用户名:</label><input type="text" class="form-control" id="username" name="username" placeholder="请输入用户名" [(ngModel)]="username"></div><div class="form-group"><label for="password">密码:</label><input type="password" class="form-control" id="password" name="password" placeholder="请输入密码"[(ngModel)]="password"></div><div class="form-check my-check"><input type="checkbox" class="form-check-input" id="exampleCheck1"><label class="form-check-label" for="exampleCheck1">Check me out</label></div><button type="button" class="btn btn-primary" (click)="doLogin()">登 录</button></div></div>

ponent.scss

.container {margin: 200px auto;.my-card {width: 40% !important;padding: 30px;margin: 0 auto;background-color: rgba(255, 255, 255, .8);.my-check {margin: 0 0 .5rem 0;}.btn {}}}

静态效果大概是这样的(请忽略吃货背景图)

6.结语

本篇完成了前端项目的静态部分和简单的路由功能,下一篇将添加网络功能,路由守卫功能

源码: /Zzuser/security/tree/master/security-front

上篇: /cepto/article/details/85331386

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。