ecode-auth
v0.0.41
Published
ecode 权限模块 可作为单点认证
Downloads
11
Readme
EcodeAuth
ecode 权限模块 可作为单点认证
配置说明:
export interface AuthConfig {
tokenKey: string; // 系统使用的token键 例如 token 、Authorization
loginRoute: string; // 登录地址路由
loadByToken: LoadHandle, // 当获取到token后调用 可根据token写自己的逻辑 比如获取当前用户等
publicKey: string; // rsa公钥 用来加密密码
sso: {
clientId: string; // 单点客户端ID
accessCodeKey: string; // 单点accessCode键 例如 code 、accessCode
accessCodeHandle: AccessCodeHandle; // 获取accessCode的处理 是一个Observable<ResponseResult<AccessCodeResult>>对象
loginAddress: string; // 登录服务端地址
logoutAddress: string; // 登出服务端地址
},
authExpireReturnCode: string; // 权限失败返回code值 例如 -1 标识权限失败
}
使用
创建新项目
ng new test
安装
npm install ecode-auth
导入模块
@NgModule({
imports: [
AuthModule
]
})
使用内部ecode默认实现配置provider
export function initializeAuthConfig(factory: EcodeAuthConfigFactory) {
let config = factory.getConfig(
"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCgKEtllxrAZ1izOvtQbsv89sTp1KwNiqe3zoVEWu49CV80CntN2P42xi+kwx+DvrJx75WW0LpXOKkuAUUoBWrBgMh+Kx5+XwasPX36WfWtQ3OpJzmUPTvDD60w/gVpVc1xCYzRGNqSP/OBZyT/SxJDitD4UpTranpklRsIlv/+vwIDAQAB",
"128",
"http://localhost:3200"
);
config.loginRoute = '/login'
return config;
}
@NgModule({
imports: [
AuthModule
],
providers: [
{
provide: AUTH_CONFIG,
useFactory: initializeAuthConfig,
deps: [EcodeAuthConfigFactory],
multi: false
}
],
})
创建login组件和home组件
ng g c login
ng g c home
## login组件
import { Component, OnInit } from '@angular/core';
import { AuthService } from 'ecode-auth';
@Component({
selector: 'app-login',
template: `
<p>login works!</p> `
})
export class LoginComponent implements OnInit{
constructor(private authService:AuthService){
}
ngOnInit(): void {
this.authService.login("替换为用户名", "替换为密码");
}
}
home组件
import { Component, OnInit } from '@angular/core';
import { AuthService } from 'ecode-auth';
@Component({
selector: 'app-home',
template:`
<p>{{token}}</p>
`
})
export class HomeComponent implements OnInit {
constructor(private authService: AuthService) {
}
token: string = '';
ngOnInit(): void {
if (this.authService.token) {
console.log(this.authService.token);
this.token = this.authService.token;
}
}
}
## 配置路由
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { authGuardFactory } from 'ecode-auth';
import { HomeComponent } from './components/home/home.component';
import { LoginComponent } from './components/login/login.component';
// 使用ecode-auth模块提供的路由守卫
const authGuard = authGuardFactory();
const routes: Routes = [
{ path: '', pathMatch: 'full',redirectTo:"/home"},
{ path: 'login', component:LoginComponent },
// 将home路由配置路由守卫
{ path: 'home', canActivate: [authGuard], component:HomeComponent},
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
启动项目测试
npm start