运营商系统登录与安全控制

2.1需求分析

完成运营商登陆功能

(1)、登录页面

(2)登录后页面

(3)、点击右上角头像后显示。

2.2登陆功能的实现

2.2.1配置文件

(1)修改mall-manager-web的pom.xml ,添加依赖

<!-- 身份验证 -->

<dependency>

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

<artifactId>spring-security-core</artifactId>

</dependency>

<dependency>

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

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

</dependency>

<dependency>

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

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

</dependency>

(2)修改web.xml

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring/spring-security.xml</param-value>

</context-param>

<listener>

<listener-class>

org.springframework.web.context.ContextLoaderListener

</listener-class>

</listener>

<filter>

<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)mall-manager-web的spring目录下添加配置文件spring-security.xml

<!-- 以下页面不被拦截 -->

<http pattern="/*.html" security="none"></http>

<http pattern="/css/**" security="none"></http>

<http pattern="/img/**" security="none"></http>

<http pattern="/js/**" security="none"></http>

<http pattern="/plugins/**" security="none"></http>

<!-- 页面拦截规则 -->

<http use-expressions="false">

<intercept-url pattern="/*" access="ROLE_ADMIN" />

<form-login login-page="/login.html"  default-target-url="/admin/index.html" authentication-failure-url="/login.html" always-use-default-target="true"/>

<csrf disabled="true"/>

<headers>

<frame-options policy="SAMEORIGIN"/>

</headers>

</http>

<!-- 认证管理器 -->

<authentication-manager>

<authentication-provider>

<user-service>

<user name="admin" password="123" authorities="ROLE_ADMIN"/>

<user name="sunwukong" password="dasheng" authorities="ROLE_ADMIN"/>

</user-service>

</authentication-provider>

</authentication-manager>

配置说明:

1.如果你在系统中使用了框架页,需要设置框架页的策略为SAMEORIGIN

<headers>

<frame-options policy="SAMEORIGIN"/>

</headers>

2.always-use-default-target:指定了是否在身份验证通过后总是跳转到default-target-url属性指定的URL。

2.2.2登录页面

修改mall-manager-web的 login.html

<form id="loginform" action="/login" method="post"  class="sui-form">

<div class="input-prepend"><span class="add-on loginname"></span>

<input id="prependedInput"  name="username" type="text" placeholder="邮箱/用户名/手机号" class="span2 input-xfat">

</div>

<div class="input-prepend"><span class="add-on loginpwd"></span>

<input id="prependedInput"  name="password" type="password" placeholder="请输入密码" class="span2 input-xfat">

</div>

<div class="setting">

<div id="slider">

<div id="slider_bg"></div>

<span id="label">>></span> <span id="labelTip">拖动滑块验证</span>

</div>

</div>

<div class="logined">

<a class="sui-btn btn-block btn-xlarge btn-danger" οnclick="document:loginform.submit()" target="_blank">登  录</a>

</div>

</form>

2.3主界面显示登陆

2.3.1后端代码

在mall-manager-web新建LoginController.java

package com.mall.manager.controller;

import java.util.HashMap;

import java.util.Map;

import org.springframework.security.core.context.SecurityContextHolder;

import org.springframework.security.core.userdetails.UserDetails;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

@RestController

@RequestMapping("/login")

public class LoginController {

@RequestMapping("name")

public Map name(){

String name=SecurityContextHolder.getContext()

.getAuthentication().getName();

Map map=new HashMap();

map.put("loginName", name);

return map ;

}

}

2.3.2前端代码

  1. 新建loginService.js

//登陆服务层

app.service('loginService',function($http){

//读取登录人名称

this.loginName=function(){

return $http.get('../login/name.do');

}

});

  1. 新建indexController.js

app.controller('indexController' ,function($scope,$controller   ,loginService){

//读取当前登录人

$scope.showLoginName=function(){

loginService.loginName().success(

function(response){

$scope.loginName=response.loginName;

}

);

}

});

(3)在页面admin/index.html引入JS

<script type="text/javascript" src="../plugins/angularjs/angular.min.js"></script>

<script type="text/javascript" src="../js/base.js"></script>

<script type="text/javascript" src="../js/service/loginService.js"></script>

<script type="text/javascript" src="../js/controller/indexController.js"></script>

(4)添加指令

<body class="hold-transition skin-green sidebar-mini" ng-app="mall" ng-controller="indexController" ng-init="showLoginName ()">

(5)将页面上的测试用户 替换成 {{loginName}}

2.4退出登录

(1)在mall-manager-web的spring-security.xml的http节点中添加配置

<logout/>

加此配置后,会自动的产生退出登录的地址/logout,如果你不想用这个地址 ,你也可以定义生成的退出地址以及跳转的页面,配置如下

<logout logout-url="" logout-success-url=""/>

logout-url:退出的地址,会自动生成

logout-success-url:退出后跳转的地址

(2)修改注销的链接

<div class="pull-right">

<a href="../logout" class="btn btn-default btn-flat">注销</a>

</div>

注册、登录、退出登录相关推荐

  1. 微信小程序 登录与退出登录

    app.js里onLaunch() { // 展示本地存储 onLaunch: function () { //判断用户的登录状态 this.globalData.loginPromise = get ...

  2. Java实现登录功能(含修改密码 退出登录等)

    1.登录页面如图 2.业务准备 2.1.用户实体类 public class User {/*** 用户ID*/private Integer id;/*** 用户账号*/private String ...

  3. node.js(node.js+mongoose小案例)_实现简单的注册登录退出

    一.前言 通过node.js基本知识对node.js基本知识的一个简单应用 1.注册 2.登录 3.退出 二.基本内容 1.项目结构搭建如图所示 2.这个小案列中用到了art-template子模板以 ...

  4. 个人博客四|注册登录退出功能后台开发

    声明:本博客的注册登录退出功能将使用django-allauth,参考资源如下: django-allauth文档 django-allauth教程 1.安装django-allauth pip in ...

  5. vue实现登录、注册、退出、跳转等功能,简单实用

    目录 效果图1: 效果图2: 效果图3: 效果图4: 完整实例: 效果图1: 效果图2: 效果图3: 效果图4: 完整实例: <!DOCTYPE html> <html>< ...

  6. 这两天老是有兄弟问到Vue的登陆和注册,登陆成功留在首页,没有登录回到登录页面,现在我用最简单实用的方法实现(两分钟技就看懂)...

    其实登录注册,并且登录一次保持登录的状态,是每个项目都需要实现的功能. 网上也有很多的方法,不过,不是通俗易懂,在这里说一下我自己的方法,非常简单实用 核心就是用localStorage存.取数据,这 ...

  7. android 点击退出账号,Android应用退出登录的实现方法

    每一个app都会有一个"退出登陆"的功能,当点击退出之后需要将所有的Activity都finish掉,开始是想将栈中的所有Activity清除掉,但是没有找到方法,后来用广播实现了 ...

  8. 登录,注册,登录,登录..?

    Last year I found myself in an interesting conversation about which copy to use for a website's sign ...

  9. CAS 4.1.x 单点登出(退出登录)的原理解析

    2019独角兽企业重金招聘Python工程师标准>>> 我们在项目中使用了cas作为单点登录的解决方案,当在集成shiro做统一权限控制的时候,发现单点退出登录有坑,所以啃了一下CA ...

最新文章

  1. 5、计算机图形学——着色与光照模型
  2. Spring+SpringMVC+Log4J
  3. golang常见内存泄漏
  4. 将redis作为windows服务安装
  5. 编写高质量代码:Web前端开发修炼之道(三)
  6. ubuntu 应用程序菜单_Ubuntu智能手机,塔式无人机飞行控制应用程序等
  7. Jboss启动报错——DailyRollingFileAppender无法转换异常
  8. 苏格拉底的苹果_苏格拉底关于人生的教诲
  9. android 开发 - 结束所有activity
  10. Java压缩/解压缩二进制文件
  11. click和blur冲突的问题
  12. python 把list中的所有元素串起来变为字符串
  13. c#模板保存并读取.mdl文件
  14. ps2手柄linux,索尼为PS5 DualSense手柄推出官方Linux驱动程序
  15. 计算机基础知识vf试题及答案,2016年计算机二级考试《VF》上机试题及答案(1)
  16. php 孙中岳_华杯成绩终于出来了!(学而思、华英)
  17. Android实现TTS文字转语音功能
  18. 2022中元节前后几天不出门?前三天后三天不能出门是真的吗?
  19. Spreadsheet
  20. linux下安装MySQL遇到的坑

热门文章

  1. MTK android11 新增按键流程(framework)
  2. 全缓存、行缓存和无缓存
  3. 集成电路:芯片时代的到来
  4. java对象转JSONObject、JSONObject转java对象及String转JSONObject
  5. mysql修改字段设置_在mysql中,如何改变列声明.
  6. 计算机,我该学什么?
  7. 潭州课堂25班:Ph201805201 django 项目 第一课 (课堂笔记)
  8. Splay 总结基础精华
  9. PS系列之 -- 通道抠图进阶 : 用通道抠取头发
  10. vue配置favicon.ico图标