模塊六 管理端-權(quán)限控制_第1頁
模塊六 管理端-權(quán)限控制_第2頁
模塊六 管理端-權(quán)限控制_第3頁
模塊六 管理端-權(quán)限控制_第4頁
模塊六 管理端-權(quán)限控制_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

模塊六管理端-權(quán)限控制《JavaEE企業(yè)級(jí)應(yīng)用開發(fā)項(xiàng)目教程(SSM)》知識(shí)目標(biāo)/Target了解認(rèn)證和授權(quán),能夠簡述認(rèn)證和授權(quán)的概念掌握SpringSecurity的實(shí)現(xiàn)方式,能夠使用SpringSecurity完成系統(tǒng)的認(rèn)證和授權(quán)技能目標(biāo)/Target掌握顯示用戶名的實(shí)現(xiàn)方式,能夠使用SpringSecurity實(shí)現(xiàn)顯示用戶名的功能掌握退出登錄的實(shí)現(xiàn)方式,能夠使用<security:logout>過濾器實(shí)現(xiàn)退出登錄的功能章節(jié)概述/

Summary在Web應(yīng)用開發(fā)過程中,權(quán)限管理是非常重要的一個(gè)環(huán)節(jié)。傳智健康管理端作為健康管理機(jī)構(gòu)的后臺(tái)系統(tǒng),如果不建立權(quán)限管理,那么任何人都可以輕而易舉地進(jìn)行所有操作,顯然,這樣的效果并不是我們所希望的。接下來,本模塊將對(duì)傳智健康管理端的權(quán)限控制功能進(jìn)行詳細(xì)講解。目錄/Contents010203實(shí)現(xiàn)認(rèn)證和授權(quán)顯示用戶名退出登錄實(shí)現(xiàn)認(rèn)證和授權(quán)6-1任務(wù)描述出于對(duì)系統(tǒng)安全性的考慮,我們希望用戶在訪問管理端時(shí)能夠進(jìn)行身份認(rèn)證,即通過用戶名和密碼識(shí)別用戶的身份,對(duì)于沒有通過認(rèn)證的用戶不允許訪問;對(duì)于通過認(rèn)證的用戶,允許訪問本人對(duì)應(yīng)角色被授權(quán)的資源。根據(jù)用戶角色的不同,我們將用戶分為普通用戶、管理員、超級(jí)管理員,這3類角色對(duì)管理端資源的操作權(quán)限是不同的。本任務(wù)要求實(shí)現(xiàn)對(duì)用戶身份進(jìn)行認(rèn)證,并將操作權(quán)限和用戶角色進(jìn)行綁定,從而通過角色授予用戶不同的操作權(quán)限。任務(wù)分析(1)提交用戶登錄的請求(2)接收和處理用戶登錄請求(3)查詢用戶信息(4)展示登錄結(jié)果為login.html頁面中的“登錄”按鈕綁定單擊事件,在單擊事件觸發(fā)后提交用戶登錄的請求。首先根據(jù)用戶名查詢該用戶的個(gè)人信息;其次根據(jù)用戶個(gè)人信息查詢用戶的角色;最后根據(jù)用戶的角色查詢角色對(duì)應(yīng)的權(quán)限。SpringSecurityUserService類中的loadUserByUsername()方法接收頁面提交的請求。login.html頁面根據(jù)返回結(jié)果加以處理。任務(wù)分析認(rèn)證和授權(quán)的實(shí)現(xiàn)過程知識(shí)進(jìn)階在權(quán)限管理的概念中,有兩個(gè)非常重要的名詞:認(rèn)證和授權(quán)。認(rèn)證系統(tǒng)提供的用于識(shí)別用戶身份的功能,認(rèn)證的目的是讓系統(tǒng)識(shí)別當(dāng)前用戶的角色身份。授權(quán)授權(quán)即訪問控制,控制用戶可以訪問哪些資源,用戶進(jìn)行身份認(rèn)證后需要分配權(quán)限才可以訪問系統(tǒng)資源。1.認(rèn)證和授權(quán)的概念知識(shí)進(jìn)階2.SpringSecurity簡介SpringSecurity是一個(gè)能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應(yīng)用上下文中配置的Bean,充分利用了SpringIoC、DI和AOP功能,在為企業(yè)應(yīng)用系統(tǒng)安全控制編寫代碼時(shí)無須編寫大量重復(fù)的代碼。Web項(xiàng)目開發(fā)時(shí),如果選擇使用SpringSecurity作為權(quán)限管理框架,那么首先要做的是導(dǎo)入JAR包。SpringSecurity的核心JAR包具體如下。spring-spring-web.jar:Web工程必備的一個(gè)jar包,包含過濾器和相關(guān)的Web安全基礎(chǔ)結(jié)構(gòu)代碼。spring-security-config.jar:用于解析XML配置文件。spring-security-taglibs.jar:SpringSecurity提供的動(dòng)態(tài)標(biāo)簽庫。知識(shí)進(jìn)階在health_parent父工程的pom.xml文件中引入SpringSecurity的依賴信息。<properties>

<spring.security.version>5.0.5.RELEASE</spring.security.version></properties><dependencyManagement>

<dependency>

<groupId>org.springframework.security</groupId>

<artifactId>spring-security-web</artifactId>

<version>${spring.security.version}</version> </dependency> <dependency>

<groupId>org.springframework.security</groupId>

<artifactId>spring-security-config</artifactId>

<version>${spring.security.version}</version> </dependency> <dependency>

<groupId>org.springframework.security</groupId>

<artifactId>spring-security-taglibs</artifactId>

<version>${spring.security.version}</version> </dependency>為web應(yīng)用提供安全防護(hù)用于解析xml文件動(dòng)態(tài)標(biāo)簽庫3.SpringSecurity入門案例(1)導(dǎo)入SpringSecurity的依賴知識(shí)進(jìn)階在health_common子模塊的pom.xml文件中引入SpringSecurity的依賴信息。<dependencies>

<dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-web</artifactId></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-config</artifactId></dependency><dependency><groupId>org.springframework.security</groupId><artifactId>spring-security-taglibs</artifactId></dependency></dependencies>3.SpringSecurity入門案例(1)導(dǎo)入SpringSecurity的依賴知識(shí)進(jìn)階在health_backend子模塊的web.xml文件中配置用于整合SpringSecurity框架的過濾器DelegatingFilterProxy。<!--委派過濾器,用于整合其他框架--><filter><!--整合springsecurity時(shí),此過濾器的名稱固定springSecurityFilterChain--><filter-name>springSecurityFilterChain</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter><filter-mapping><filter-name>springSecurityFilterChain</filter-name><url-pattern>/*</url-pattern></filter-mapping>3.SpringSecurity入門案例(2)配置web.xml知識(shí)進(jìn)階在health_backend子模塊的src/main/resources目錄下創(chuàng)建spring-security.xml文件,用于配置SpringSecurity的攔截規(guī)則和認(rèn)證管理器。<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans"<!--配置過濾器--><security:httpauto-config="true"use-expressions="true"><!--intercept-url:定義一個(gè)攔截規(guī)則

pattern:對(duì)哪些url進(jìn)行權(quán)限控制

access:在請求對(duì)應(yīng)的URL時(shí)需要什么權(quán)限--><security:intercept-urlpattern="/**"access="hasRole('ROLE_ADMIN')"/></security:http>

</beans>自動(dòng)配置,會(huì)使用springSecurity默認(rèn)的認(rèn)證頁面3.SpringSecurity入門案例(3)配置spring-security.xml知識(shí)進(jìn)階在web.xml中指定項(xiàng)目啟動(dòng)時(shí)會(huì)加載springmvc.xml,如果想要spring-security.xml文件在項(xiàng)目啟動(dòng)時(shí)直接被加載,可以在health_backend子模塊的springmvc.xml中導(dǎo)入配置文件spring-security.xml。<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans"

<importresource="classpath:spring-security.xml"></import></beans>3.SpringSecurity入門案例(4)修改springmvc.xml文件知識(shí)進(jìn)階創(chuàng)建一個(gè)名稱為index的HTML文件,文件內(nèi)容為“helloSpringSecurity!!”。依次啟動(dòng)Zookeeper服務(wù),health_service_provider和health_backend服務(wù)。在瀏覽器訪問http://localhost:82/index.html。3.SpringSecurity入門案例(5)SpringSecurity入門案例測試知識(shí)進(jìn)階在login.html頁面中輸入用戶名admin和密碼1234,單擊“Login”按鈕。3.SpringSecurity入門案例(5)SpringSecurity入門案例測試知識(shí)進(jìn)階在認(rèn)證時(shí),只需要判斷用戶輸入的用戶名和密碼是否正確,因此只需要通過用戶表進(jìn)行校驗(yàn)即可。在授權(quán)時(shí),首先根據(jù)用戶查詢該用戶擁有哪些角色;再根據(jù)角色查詢對(duì)應(yīng)的菜單,這樣就確定了用戶能夠看到哪些菜單。然后再根據(jù)用戶的角色查詢對(duì)應(yīng)的權(quán)限,這樣就確定了用戶擁有哪些權(quán)限。在認(rèn)證和授權(quán)的過程中涉及的系統(tǒng)的數(shù)據(jù)表包括用戶表t_user、權(quán)限表t_permission、角色表t_role、菜單表t_menu、用戶角色關(guān)系表t_user_role、角色權(quán)限關(guān)系表t_role_permission、角色菜單關(guān)系表t_role_menu。4.權(quán)限數(shù)據(jù)模型知識(shí)進(jìn)階角色表和用戶表、權(quán)限表、菜單表之間都是多對(duì)多關(guān)系,用戶、權(quán)限、菜單之間的關(guān)系是通過角色進(jìn)行控制的。4.權(quán)限數(shù)據(jù)模型任務(wù)實(shí)現(xiàn)在health_backend子模塊的src/main/webapp目錄下導(dǎo)入登錄頁面login.html。(1)導(dǎo)入登錄頁面login.html任務(wù)實(shí)現(xiàn)根據(jù)權(quán)限數(shù)據(jù)模型設(shè)計(jì)實(shí)體類,在health_common子模塊的com.itheima.pojo包下創(chuàng)建用戶實(shí)體類User、角色實(shí)體類Role、權(quán)限實(shí)體類Permission和菜單實(shí)體類Menu,在類中聲明屬性,定義屬性的getter/setter方法。(2)設(shè)計(jì)實(shí)體類任務(wù)實(shí)現(xiàn)在health_backend子模塊的com.itheima.security包下創(chuàng)建SpringSecurityUserService類,實(shí)現(xiàn)UserDetailsService接口并重寫loadUserByUsername()方法,用于處理查詢用戶信息的請求。@RestController

@ComponentpublicclassSpringSecurityUserServiceimplementsUserDetailsService{@Reference//查找服務(wù),實(shí)現(xiàn)查詢數(shù)據(jù)庫privateUserServiceuserService;//根據(jù)用戶名查詢數(shù)據(jù)庫中用戶信息publicUserDetailsloadUserByUsername(Stringusername)throwsUsernameNotFoundException{Useruser=userService.findByUsername(username);//調(diào)用用戶服務(wù)獲取用戶,角色、權(quán)限信息if(user==null){

returnnull;

}

省略

封裝當(dāng)前用戶的角色和權(quán)限的過程returnneworg.springframework.security.core.userdetails.User(username,user.getPassword(),list);}}(3)實(shí)現(xiàn)用戶認(rèn)證任務(wù)實(shí)現(xiàn)在health_interface子模塊的com.itheima.service包下創(chuàng)建接口UserService,在接口中定義findByUsername()方法,用于通過用戶名查找用戶。publicinterfaceUserService{//根據(jù)用戶名查找用戶publicUserfindByUsername(Stringusername);}(4)創(chuàng)建用戶認(rèn)證服務(wù)任務(wù)實(shí)現(xiàn)在health_service_provider子模塊的com.itheima.service.impl包下創(chuàng)建UserService接口實(shí)現(xiàn)類UserServiceImpl,并重寫接口的findByUsername()方法。@Service(interfaceClass=UserService.class)@TransactionalpublicclassUserServiceImplimplementsUserService{

publicUserfindByUsername(Stringusername){Useruser=userDao.findByUsername(username);if(user==null){returnnull;}

IntegeruserId=user.getId();Set<Role>roles=roleDao.findByUserId(userId);if(roles!=null&&roles.size()>0){for(Rolerole:roles){

IntegerroleId=role.getId();//獲取角色idSet<Permission>permissions=permissionDao.findByRoleId(roleId);if(permissions!=null&&permissions.size()>0){role.setPermissions(permissions);//角色關(guān)聯(lián)權(quán)限集合}}

user.setRoles(roles);//用戶關(guān)聯(lián)角色集合}returnuser;}}根據(jù)用戶名查詢用戶信息根據(jù)用戶id查詢該用戶關(guān)聯(lián)的角色根據(jù)角色id查詢該角色關(guān)聯(lián)的權(quán)限(5)實(shí)現(xiàn)用戶認(rèn)證服務(wù)任務(wù)實(shí)現(xiàn)在health_service_provider子模塊的com.itheima.dao包下創(chuàng)建接口UserDao,在接口中定義findByUsername()方法,用于根據(jù)用戶名查找用戶。publicinterfaceUserDao{publicUserfindByUsername(Stringusername);//根據(jù)用戶名查找用戶}(6)創(chuàng)建持久層接口任務(wù)實(shí)現(xiàn)在health_service_provider子模塊的resources文件夾的com.itheima.dao目錄中創(chuàng)建與UserDao接口同名的映射文件UserDao.xml,在文件中使用<select>元素映射查詢語句,根據(jù)用戶名查找用戶。<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN""/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.itheima.dao.UserDao"><!--根據(jù)用戶名查找用戶--><selectid="findByUsername"parameterType="string"resultType="com.itheima.pojo.User">SELECT

*FROMt_user

WHEREusername=#{value}</select></mapper>(6)創(chuàng)建持久層接口任務(wù)實(shí)現(xiàn)在health_service_provider子模塊的com.itheima.dao包下創(chuàng)建接口RoleDao,在接口中定義findByUserId()方法,用于根據(jù)用戶id查找用戶擁有的角色。publicinterfaceRoleDao{//根據(jù)用戶id查找用戶擁有的角色publicSet<Role>findByUserId(IntegeruserId);}(6)創(chuàng)建持久層接口任務(wù)實(shí)現(xiàn)在health_service_provider子模塊的resources文件夾下的com.itheima.dao目錄中創(chuàng)建與RoleDao接口同名的映射文件RoleDao.xml,在文件中使用<select>元素映射查詢語句,根據(jù)用戶id查找用戶擁有的角色。<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN""/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.itheima.dao.RoleDao"><!--根據(jù)用戶id查找用戶擁有的角色--><selectid="findByUserId"parameterType="int"resultType="com.itheima.pojo.Role">

SELECTr.*FROMt_roler,t_user_roleur

WHEREr.id=ur.role_idANDur.user_id=#{user_id}</select></mapper>(6)創(chuàng)建持久層接口任務(wù)實(shí)現(xiàn)在health_service_provider子模塊的com.itheima.dao包下創(chuàng)建接口PermissionDao,在接口中定義findByRoleId()方法,用于根據(jù)角色id查找用戶擁有的權(quán)限。publicinterfacePermissionDao{//根據(jù)角色id查找用戶擁有的權(quán)限publicSet<Permission>findByRoleId(IntegerroleId);}(6)創(chuàng)建持久層接口任務(wù)實(shí)現(xiàn)在health_service_provider子模塊的resources文件夾下的com.itheima.dao目錄中創(chuàng)建與PermissionDao接口同名的映射文件PermissionDao.xml。在文件中使用<select>元素映射查詢語句,根據(jù)角色id查找用戶擁有的權(quán)限。<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-////DTDMapper3.0//EN""/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.itheima.dao.PermissionDao"><!--根據(jù)角色id查找用戶擁有的權(quán)限--><selectid="findByRoleId"parameterType="int"resultType="com.itheima.pojo.Permission">

SELECTp.*FROMt_permissionp,t_role_permissionrp

WHEREp.id=rp.permission_idANDrp.role_id=#{role_id}</select></mapper>(6)創(chuàng)建持久層接口任務(wù)實(shí)現(xiàn)對(duì)SpringSecurity入門案例中的spring-security.xml文件進(jìn)行修改,在文件中重新添加過濾器、配置攔截規(guī)則、配置認(rèn)證管理器,以及配置登錄頁面、密碼加密等內(nèi)容。<security:httpsecurity="none"pattern="/js/**"/><security:httpsecurity="none"pattern="/css/**"/><security:httpsecurity="none"pattern="/img/**"/><security:httpsecurity="none"pattern="/plugins/**"/><security:httpsecurity="none"pattern="/login.html"/>(7)修改spring-security.xml文件定義相關(guān)權(quán)限控制,指定哪些資源不需要進(jìn)行權(quán)限校驗(yàn)。任務(wù)實(shí)現(xiàn)設(shè)置在頁面中可以通過iframe訪問受保護(hù)的頁面,配置攔截規(guī)則,指定登錄頁面并配置登錄信息。<security:httpauto-config="true"use-expressions="true"><security:headers><!--設(shè)置在頁面可以通過iframe訪問受保護(hù)的頁面,默認(rèn)為不允許訪問--><security:frame-optionspolicy="SAMEORIGIN"></security:frame-options></security:headers><!--配置攔截規(guī)則,只要認(rèn)證通過就可以訪問--><security:intercept-urlpattern="/pages/**"access="isAuthenticated()"/><!--如果使用自己定義的登錄頁面,需要進(jìn)行如下配置--><security:form-loginlogin-processing-url="/login.do"username-parameter="username"password-parameter="password"login="/login.html"default-target-url="/pages/main.html"></security:form-login><!--CSRF是一個(gè)過濾器disabled="true"表示關(guān)閉這個(gè)過濾器--><security:csrfdisabled="true"></security:csrf></security:http>用戶名密碼登錄頁面目標(biāo)頁面(7)修改spring-security.xml文件任務(wù)實(shí)現(xiàn)配置認(rèn)證管理器,配置密碼加密對(duì)象,以及開啟注解方式權(quán)限控制。<!--配置認(rèn)證管理器--><security:authentication-manager>

<security:authentication-provideruser-service-ref="springSecurityUserService">

<!--指定密碼加密策略-->

<security:password-encoderref="passwordEncoder"/>

</security:authentication-provider></security:authentication-manager><!--配置密碼加密對(duì)象--><beanid="passwordEncoder"class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"/><!--開啟注解方式權(quán)限控制--><security:global-method-securitypre-post-annotations="enabled"/>(7)修改spring-security.xml文件任務(wù)實(shí)現(xiàn)將springmvc.xml文件中的包掃描路徑修改為com.itheima,以確保com.security包和itheima.controller包下的類都可以被掃描到。<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="/schema/beans"

<!--批量掃描-->

<dubbo:annotationpackage="com.itheima"/></beans>(8)修改springmvc.xml文件任務(wù)實(shí)現(xiàn)啟動(dòng)Zookeeper服務(wù),在IDEA依次啟動(dòng)health_service_provider和health_backend。在瀏覽器中訪問http://localhost:82/login.html。(9)測試用戶認(rèn)證任務(wù)實(shí)現(xiàn)輸入用戶名和密碼后,單擊“登錄”按鈕進(jìn)行登錄。成功跳轉(zhuǎn)到管理端主頁面,說明用戶認(rèn)證成功。(9)測試用戶認(rèn)證任務(wù)實(shí)現(xiàn)為刪除檢查項(xiàng)添加權(quán)限控制,以用戶xiaoming的賬號(hào)為例進(jìn)行測試。在數(shù)據(jù)庫中查詢用戶xiaoming擁有的權(quán)限。(10)權(quán)限控制任務(wù)實(shí)現(xiàn)使用xiaoming的賬號(hào)登錄管理端,刪除沒有被被檢查組引用的檢查項(xiàng)。(10)權(quán)限控制即使xiaoming沒有刪除檢查項(xiàng)的權(quán)限,同樣可以進(jìn)行刪除檢查項(xiàng)的操作。任務(wù)實(shí)現(xiàn)在CheckItemController類的delete()方法中添加注解進(jìn)行權(quán)限控制。publicclassCheckItemController{

//根據(jù)id刪除檢查項(xiàng)

@PreAuthorize("hasAuthority('CHECKITEM_DELETE')")//權(quán)限校驗(yàn)@RequestMapping("/delete")publicResultdelete(Integerid){

}}(10)權(quán)限控制任務(wù)實(shí)現(xiàn)在checkitem.html頁面中定義showMessage()方法,用于在權(quán)限不足時(shí)彈出提示信息。//權(quán)限不足提示showMessage(r){if(r=='Error:Requestfailedwithstatuscode403'){//權(quán)限不足this.$message.error('無訪問權(quán)限');return;}else{this.$message.error('未知錯(cuò)誤');return;}},(11)定義權(quán)限不足提示方法任務(wù)實(shí)現(xiàn)修改checkitem.html頁面中的handleDelete()方法,設(shè)置權(quán)限不足時(shí)彈出的提示信息。handleDelete(row){//彈出刪除確認(rèn)提示對(duì)話框this.$confirm('你確定要?jiǎng)h除當(dāng)前數(shù)據(jù)嗎?','提示',{

}).then(()=>{//發(fā)送Ajax請求,將id提交到Controlleraxios.get("/checkitem/delete.do?id="+row.id).then((res)=>{

}).catch((r)=>{

this.showMessage(r);});}).catch(()=>{this.$message("已取消");});}(12)優(yōu)化checkitem.html頁面任務(wù)實(shí)現(xiàn)依次啟動(dòng)ZooKeeper服務(wù)、health_service_provider和health_backend,在瀏覽器中訪問http://localhost:82/pages/checkitem.html。選擇項(xiàng)目編號(hào)為0067的檢查項(xiàng)執(zhí)行刪除操作。(13)測試授權(quán)顯示用戶名6-2任務(wù)描述一般情況下,當(dāng)用戶成功登錄系統(tǒng)后,都會(huì)在系統(tǒng)入口的頁面上顯示登錄用戶的用戶名,以表明當(dāng)前是誰處于登錄系統(tǒng)中。本任務(wù)要求在用戶認(rèn)證成功并跳轉(zhuǎn)到系統(tǒng)主頁main.html后,在頁面顯示用戶名。任務(wù)分析當(dāng)在login.html頁面輸入用戶名和密碼,單擊“登錄”按鈕后,觸發(fā)提交查詢用戶名的請求。(1)提交查詢用戶名請求由UserController類的getLoginUsername()方法接收頁面提交的請求,獲取當(dāng)前登錄用戶的用戶名。(2)接收和處理查詢用戶名請求main.html頁面根據(jù)返回結(jié)果顯示用戶名。(3)顯示用戶名顯示用戶名任務(wù)分析顯示用戶名的實(shí)現(xiàn)過程任務(wù)實(shí)現(xiàn)要實(shí)現(xiàn)訪問main.html頁面時(shí)查詢用戶名,可以將查詢用戶名的操作定義在鉤子函數(shù)created()中。created()函數(shù)在Vue對(duì)象初始化完成后自動(dòng)執(zhí)行。<scriptsrc="../js/axios-0.18.0.js"></script><script>newVue({

created(){//發(fā)送ajax請求,獲取當(dāng)前登錄用戶的用戶名,用于頁面展示

axios.get("/user/getLoginUsername.do").then((res)=>{this.username=res.data.data;//基于Vue的數(shù)據(jù)綁定展示用戶名});}});</script>(1)提交查詢用戶名請求任務(wù)實(shí)現(xiàn)在health_backend子模塊下創(chuàng)建控制器類UserController,在類中定義getLoginUsername()方法,用于獲取當(dāng)前登錄用戶的用戶名。@RequestMapping("/getOrderSettingByMonth")@RestController@RequestMapping("/user")publicclassUserController{@RequestMapping("/getLoginUsername")publicResultgetLoginUsername(){try{//調(diào)用SpringSecurity框架提供的API獲取當(dāng)前用戶的username展示到頁面Useruser=(User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();Stringusername=user.getUsername();//獲取用戶名

returnnewResult(true,MessageConstant.GET_USERNAME_SUCCESS,usern

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論