当前位置: 首页 > news >正文

租用服务器一般是谁帮助维护网站安全4p营销策略分析

租用服务器一般是谁帮助维护网站安全,4p营销策略分析,淘宝网站建设好评,蜂蜜网站建设Spring Security 使用数据库认证 在 Spring Security 中如果想要使用数据进行认证操作#xff0c;有很多种操作方式#xff0c;这里我们介绍使用 UserDetails 、 UserDetailsService来完成操作。 UserDetails public interface UserDetails extends Serializable { Collecti…Spring Security 使用数据库认证 在 Spring Security 中如果想要使用数据进行认证操作有很多种操作方式这里我们介绍使用 UserDetails 、 UserDetailsService来完成操作。 UserDetails public interface UserDetails extends Serializable { Collection? extends GrantedAuthority getAuthorities(); String getPassword(); String getUsername(); boolean isAccountNonExpired(); boolean isAccountNonLocked(); boolean isCredentialsNonExpired(); boolean isEnabled(); } UserDetails 是一个接口我们可以认为 UserDetails 作用是于封装当前进行认证的用户信息但由于其是一个接口所以我们可以对其进行实现也可以使用Spring Security 提供的一个 UserDetails 的实现类 User 来完成操作 以下是 User 类的部分代码 public class User implements UserDetails, CredentialsContainer { private String password; private final String username; private final SetGrantedAuthority authorities; private final boolean accountNonExpired; //帐户是否过期 private final boolean accountNonLocked; //帐户是否锁定 private final boolean credentialsNonExpired; //认证是否过期 private final boolean enabled; //帐户是否可用UserDetailsService public interface UserDetailsService { UserDetails loadUserByUsername(String username) throws UsernameNotFoundException; } 面将 UserDetails 与 UserDetailsService 做了一个简单的介绍那么我们具体如何完成 Spring Security 的数据库认证操作哪我们通过用户管理中用户登录来完成Spring Security 的认证操作。 3. 用户管理 3.1 用户登录 spring-security.xml ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:securityhttp://www.springframework.org/schema/securityxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/securityhttp://www.springframework.org/schema/security/spring-security.xsd!-- 配置不拦截的资源 --security:http pattern/login.jsp securitynone/security:http pattern/failer.jsp securitynone/security:http pattern/css/** securitynone/security:http pattern/img/** securitynone/security:http pattern/plugins/** securitynone/!--配置具体的规则auto-configtrue 不用自己编写登录的页面框架提供默认登录页面use-expressionsfalse 是否使用SPEL表达式没学习过--security:http auto-configtrue use-expressionstrue!-- 配置具体的拦截的规则 pattern请求路径的规则 access访问系统的人必须有ROLE_USER的角色 --security:intercept-url pattern/** accesshasAnyRole(ROLE_USER,ROLE_ADMIN)/!-- 定义跳转的具体的页面 --security:form-loginlogin-page/login.jsplogin-processing-url/login.dodefault-target-url/index.jspauthentication-failure-url/failer.jspauthentication-success-forward-url/pages/main.jsp/!-- 关闭跨域请求 --security:csrf disabledtrue/!-- 退出 --security:logout invalidate-sessiontrue logout-url/logout.do logout-success-url/login.jsp //security:http!-- 切换成数据库中的用户名和密码 --security:authentication-managersecurity:authentication-provider user-service-refuserService!-- 配置加密的方式security:password-encoder refpasswordEncoder/--security:password-encoder refpasswordEncoder//security:authentication-provider/security:authentication-manager!-- 配置加密类 --bean idpasswordEncoder classorg.springframework.security.crypto.bcrypt.BCryptPasswordEncoder/!-- 提供了入门的方式在内存中存入用户名和密码security:authentication-managersecurity:authentication-providersecurity:user-servicesecurity:user nameadmin password{noop}admin authoritiesROLE_USER//security:user-service/security:authentication-provider/security:authentication-manager--security:global-method-security pre-post-annotationsenabled jsr250-annotationsenabled secured-annotationsenabled/security:global-method-security/beans 导入依赖 dependencygroupIdorg.springframework.security/groupIdartifactIdspring-security-web/artifactIdversion${spring.security.version}/version/dependencydependencygroupIdorg.springframework.security/groupIdartifactIdspring-security-config/artifactIdversion${spring.security.version}/version/dependencydependencygroupIdorg.springframework.security/groupIdartifactIdspring-security-core/artifactIdversion${spring.security.version}/version/dependencydependencygroupIdorg.springframework.security/groupIdartifactIdspring-security-taglibs/artifactIdversion${spring.security.version}/version/dependency 配置web.xml !-- 配置加载类路径的配置文件 --context-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath*:applicationContext.xml,classpath*:spring-security.xml/param-value/context-paramfilterfilter-namespringSecurityFilterChain/filter-namefilter-classorg.springframework.web.filter.DelegatingFilterProxy/filter-class/filterfilter-mappingfilter-namespringSecurityFilterChain/filter-nameurl-pattern/*/url-pattern/filter-mapping3.1.1. 登录页面 login.jsp % page languagejava contentTypetext/html; charsetUTF-8pageEncodingUTF-8% !DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd html head meta charsetutf-8 meta http-equivX-UA-Compatible contentIEedgetitle数据 - AdminLTE2定制版 | Log in/titlemetacontentwidthdevice-width,initial-scale1,maximum-scale1,user-scalablenonameviewportlink relstylesheethref${pageContext.request.contextPath}/plugins/bootstrap/css/bootstrap.min.css link relstylesheethref${pageContext.request.contextPath}/plugins/font-awesome/css/font-awesome.min.css link relstylesheethref${pageContext.request.contextPath}/plugins/ionicons/css/ionicons.min.css link relstylesheethref${pageContext.request.contextPath}/plugins/adminLTE/css/AdminLTE.css link relstylesheethref${pageContext.request.contextPath}/plugins/iCheck/square/blue.css /headbody classhold-transition login-pagediv classlogin-boxdiv classlogin-logoa hrefall-admin-index.htmlbITCAST/b后台管理系统/a/div!-- /.login-logo --div classlogin-box-bodyp classlogin-box-msg登录系统/pform action${pageContext.request.contextPath}/login.do methodpostdiv classform-group has-feedbackinput typetext nameusername classform-controlplaceholder用户名 spanclassglyphicon glyphicon-envelope form-control-feedback/span/divdiv classform-group has-feedbackinput typepassword namepassword classform-controlplaceholder密码 spanclassglyphicon glyphicon-lock form-control-feedback/span/divdiv classrowdiv classcol-xs-8div classcheckbox ichecklabelinput typecheckbox 记住 下次自动登录/label/div/div!-- /.col --div classcol-xs-4button typesubmit classbtn btn-primary btn-block btn-flat登录/button/div!-- /.col --/div/forma href#忘记密码/abr/div!-- /.login-box-body --/div!-- /.login-box --!-- jQuery 2.2.3 --!-- Bootstrap 3.3.6 --!-- iCheck --scriptsrc${pageContext.request.contextPath}/plugins/jQuery/jquery-2.2.3.min.js/scriptscriptsrc${pageContext.request.contextPath}/plugins/bootstrap/js/bootstrap.min.js/scriptscriptsrc${pageContext.request.contextPath}/plugins/iCheck/icheck.min.js/scriptscript$(function() {$(input).iCheck({checkboxClass : icheckbox_square-blue,radioClass : iradio_square-blue,increaseArea : 20% // optional});});/script /body/html UserInfo package com.itheima.ssm.domain;import java.util.List;//与数据库中users对应 public class UserInfo {private String id;private String username;private String email;private String password;private String phoneNum;private int status;private String statusStr;private ListRole roles;public String getId() {return id;}public void setId(String id) {this.id id;}public String getUsername() {return username;}public void setUsername(String username) {this.username username;}public String getEmail() {return email;}public void setEmail(String email) {this.email email;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}public String getPhoneNum() {return phoneNum;}public void setPhoneNum(String phoneNum) {this.phoneNum phoneNum;}public int getStatus() {return status;}public void setStatus(int status) {this.status status;}public String getStatusStr() {//状态0 未开启 1 开启if (status 0) {statusStr 未开启;} else if (status 1) {statusStr 开启;}return statusStr;}public void setStatusStr(String statusStr) {this.statusStr statusStr;}public ListRole getRoles() {return roles;}public void setRoles(ListRole roles) {this.roles roles;} } 3.1.2.UserServiceImpl public interface IUserService extends UserDetailsService{ } package com.itheima.ssm.service.impl;Service(userService) Transactional public class UserServiceImpl implements IUserService {Autowiredprivate IUserDao userDao;Autowiredprivate BCryptPasswordEncoder bCryptPasswordEncoder;Overridepublic UserInfo findById(String id) throws Exception {return userDao.findById(id);}Overridepublic void addRoleToUser(String userId, String[] roleIds) throws Exception {for(String roleId:roleIds){userDao.addRoleToUser(userId,roleId);}}Overridepublic ListRole findOtherRoles(String userid) throws Exception {return userDao.findOtherRoles(userid);}Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {System.out.println(username);UserInfo userInfo null;try {userInfo userDao.findByUsername(username); // System.out.println(username); // System.out.println(userInfo.toString());} catch (Exception e) {e.printStackTrace();}//处理自己的用户对象封装成UserDetailsUser user new User(userInfo.getUsername(), userInfo.getPassword(), userInfo.getStatus() 0 ? false : true, true, true, true, getAuthority(userInfo.getRoles()));return user;}//作用就是返回一个List集合集合中装入的是角色描述public ListSimpleGrantedAuthority getAuthority(ListRole roles) {ListSimpleGrantedAuthority list new ArrayList();for (Role role : roles) {list.add(new SimpleGrantedAuthority(ROLE_ role.getRoleName()));}return list;}Overridepublic ListUserInfo findAll() throws Exception{//userDao.findAll();return userDao.findAll();}Overridepublic void save(UserInfo userInfo)throws Exception {userInfo.setPassword(bCryptPasswordEncoder.encode(userInfo.getPassword()));userDao.save(userInfo);}} 3.1.3.IUserDao public interface IUserDao { Select(select * from user where id#{id}) public UserInfo findById(Long id) throws Exception; Select(select * from user where username#{username}) Results({ Result(id true, property id, column id), Result(column username, property username), Result(column email, property email), Result(column password, property password), Result(column phoneNum, property phoneNum), Result(column status, property status), Result(column id, property roles, javaType List.class, many Many(select com.itheima.ssm.dao.IRoleDao.findRoleByUserId)) }) public UserInfo findByUsername(String username); } IRoleDao public interface IRoleDao {//根据用户id查询出所有对应的角色Select(select * from role where id in (select roleId from users_role where userId#{userId}))public ListRole findRoleByUserId(String userId) throws Exception; }3.2 用户退出 使用 spring security 完成用户退出非常简单 配置 security:logout invalidate-sessiontrue logout-url/logout.do logout-successurl/login.jsp / 在header.jsp修改 a href${pageContext.request.contextPath}/logout.do classbtn btn-default btn-flat注销/a
http://wiki.neutronadmin.com/news/334389/

相关文章:

  • 网站内容与栏目设计沈阳男科医院哪家好点
  • 西安门户网站建设公司哪家好网站建设中应该返回502还是301
  • php网站开发书籍东莞手机建网站
  • 网站建设制作及推广视频类网站如何做缓存
  • 北京网站建设企业网站交易平台建设
  • 数据管理系统网站模板佛山网站优化什么价格
  • 网站建设公司是什么重庆正云环保建设网站
  • seo网站优化培训怎么做运行怎么卸载wordpress
  • wordpress网站百度收录首页易迈互联网站建设怎么样
  • 邻水网站建设网站模板flash
  • 建设校园网站中小企业微网站建设
  • 旅游网站开发意义和价值ios开发入门
  • 做百度网站好吗贵阳做网站哪家公司好
  • 深圳营销型网站制作公司网站百度显示绿色官网字如何做的
  • 建筑企业资质查询官方网站组织建设 湖南省直工会网站
  • 怎么样做网站视频wordpress 上传插件
  • 重庆市建设工程信息网官方网站网络公司经营范围许可
  • 建站边检站网站如何做地推
  • 自建网站做外贸谷歌推广wordpress设置菜单跳转到锚
  • 柳州做网站人员微信小程序开发环境搭建
  • 淮安网站建设哪家好推广软件赚钱的app
  • 潮州网站制作泰州哪家做网站建设比较好
  • 17网站一起做网店类似的网站设计计划书模板
  • 盘州市网站建设租车做什么网站推广
  • 西安企业建站在哪里做东昌网站建设公司
  • 网站的页头页脚怎么做求网站建设详细过程
  • 网站后台更新功能型类的网站
  • 易语言可以建设网站吗做加盟童装交流网站
  • 百度做的网站字体侵权兴义哪有做网站
  • 赣州网站建设hyxxjswordpress下载页面模板