网站弹窗特效如何网上赚点零花钱

news/2025/9/27 14:35:42/文章来源:
网站弹窗特效,如何网上赚点零花钱,wordpress如何登录界面,正规品牌网站设计品牌Spring有很多不同的模块。 所有这些对于具体目的都是有用的。 今天#xff0c;我将讨论Spring Security。 该模块提供了灵活的方法来管理访问Web应用程序不同部分的许可。 在这篇文章中#xff0c;我将研究Spring MVC #xff0c; Hibernate #xff0c; MySQL与Spring Sec… Spring有很多不同的模块。 所有这些对于具体目的都是有用的。 今天我将讨论Spring Security。 该模块提供了灵活的方法来管理访问Web应用程序不同部分的许可。 在这篇文章中我将研究Spring MVC Hibernate MySQL与Spring Security的集成。 任何Web应用程序的常规情况都是某些用户组之间的功能分离。 例如具有“主持人”角色的用户可以编辑数据库中的现有记录。 一个用户 具有“管理员”角色的用户可以执行与具有“主持人”角色的用户相同的操作并创建新记录。 在Spring MVC中可以使用Spring Security来实现许可管理。 目标 作为示例我将在Hibernate中使用示例Spring MVC应用程序。 用户及其角色将存储在数据库中。 MySQL将用作数据库。 我将创建三个表用户角色user_roles。 您可能会猜到user_roles表是一个中间表 。 在应用程序中将扮演两个角色主持人和管理员。 将有几个页面可供主持人和管理员访问。 制备 为了使Spring Security在项目中可用只需在pom.xml文件中添加以下依赖项 !-- Spring Security --dependencygroupidorg.springframework.security/groupidartifactidspring-security-core/artifactidversion3.1.3.RELEASE/version/dependencydependencygroupidorg.springframework.security/groupidartifactidspring-security-web/artifactidversion3.1.3.RELEASE/version/dependencydependencygroupidorg.springframework.security/groupidartifactidspring-security-config/artifactidversion3.1.3.RELEASE/version/dependency 我必须在数据库中创建三个表并在其中插入几条记录。 CREATE TABLE roles (id int(6) NOT NULL AUTO_INCREMENT,role varchar(20) NOT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT5 DEFAULT CHARSETutf8;CREATE TABLE users (id int(6) NOT NULL AUTO_INCREMENT,login varchar(20) NOT NULL,password varchar(20) NOT NULL,PRIMARY KEY (id) ) ENGINEInnoDB AUTO_INCREMENT5 DEFAULT CHARSETutf8;CREATE TABLE user_roles (user_id int(6) NOT NULL,role_id int(6) NOT NULL,KEY user (user_id),KEY role (role_id) ) ENGINEInnoDB DEFAULT CHARSETutf8; 这是角色和用户的代码 INSERT INTO hibnatedb.roles (role) VALUES (admin), (moderator);INSERT INTO hibnatedb.users (login, password) VALUES (moder, 111111), (adm, 222222);INSERT INTO hibnatedb.user_roles (user_id, role_id) VALUES (1, 2), (2, 1);主要部分 项目的完整结构具有以下结构 由于您可以在GitHub上找到该项目因此我将忽略当前主题之外的一些内容。 我想从每个Web项目的心脏开始我的意思是web.xml文件。 Spring Security基于简单的过滤器因此我需要在部署描述符中添加过滤器的声明 ...filterfilter-namespringSecurityFilterChain/filter-namefilter-classorg.springframework.web.filter.DelegatingFilterProxy/filter-class/filterfilter-mappingfilter-namespringSecurityFilterChain/filter-nameurl-pattern/*/url-pattern/filter-mapping ... 现在是时候为用户和角色表创建实体了 Entity Table(nameusers) public class User {IdGeneratedValueprivate Integer id;private String login;private String password;OneToOne(cascadeCascadeType.ALL)JoinTable(nameuser_roles,joinColumns {JoinColumn(nameuser_id, referencedColumnNameid)},inverseJoinColumns {JoinColumn(namerole_id, referencedColumnNameid)})private Role role;public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getLogin() {return login;}public void setLogin(String login) {this.login login;}public String getPassword() {return password;}public void setPassword(String password) {this.password password;}public Role getRole() {return role;}public void setRole(Role role) {this.role role;} } 和 Entity Table(nameroles) public class Role {IdGeneratedValueprivate Integer id;private String role;OneToMany(cascadeCascadeType.ALL)JoinTable(nameuser_roles, joinColumns {JoinColumn(namerole_id, referencedColumnNameid)},inverseJoinColumns {JoinColumn(nameuser_id, referencedColumnNameid)})private Set userRoles;public Integer getId() {return id;}public void setId(Integer id) {this.id id;}public String getRole() {return role;}public void setRole(String role) {this.role role;}public Set getUserRoles() {return userRoles;}public void setUserRoles(Set userRoles) {this.userRoles userRoles;}} 每个实体类都需要DAO和Service层。 public interface UserDAO {public User getUser(String login);} 和 Repository public class UserDAOImpl implements UserDAO {Autowiredprivate SessionFactory sessionFactory;private Session openSession() {return sessionFactory.getCurrentSession();}public User getUser(String login) {List userList new ArrayList();Query query openSession().createQuery(from User u where u.login :login);query.setParameter(login, login);userList query.list();if (userList.size() 0)return userList.get(0);elsereturn null; }} 分别用于Role类 public interface RoleDAO {public Role getRole(int id);} 和 Repository public class RoleDAOImpl implements RoleDAO {Autowiredprivate SessionFactory sessionFactory;private Session getCurrentSession() {return sessionFactory.getCurrentSession();}public Role getRole(int id) {Role role (Role) getCurrentSession().load(Role.class, id);return role;}} 服务层使用相同的对 public interface UserService {public User getUser(String login);} 和 Service Transactional public class UserServiceImpl implements UserService {Autowiredprivate UserDAO userDAO;public User getUser(String login) {return userDAO.getUser(login);}} 分别用于Role类 public interface RoleService {public Role getRole(int id);} 和 Service Transactional public class RoleServiceImpl implements RoleService {Autowiredprivate RoleDAO roleDAO;public Role getRole(int id) {return roleDAO.getRole(id);}} 以上只是机械的常规代码。 现在让我们研究Spring Security代码。 为了将Spring Security插入到项目中我必须创建CustomUserDetailsS​​ervice类并实现UserDetailsS​​ervice接口。 import java.util.ArrayList; import java.util.Collection; import java.util.List;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional;import com.sprsec.dao.UserDAO;Service Transactional(readOnlytrue) public class CustomUserDetailsService implements UserDetailsService {Autowiredprivate UserDAO userDAO; public UserDetails loadUserByUsername(String login)throws UsernameNotFoundException {com.sprsec.model.User domainUser userDAO.getUser(login);boolean enabled true;boolean accountNonExpired true;boolean credentialsNonExpired true;boolean accountNonLocked true;return new User(domainUser.getLogin(), domainUser.getPassword(), enabled, accountNonExpired, credentialsNonExpired, accountNonLocked,getAuthorities(domainUser.getRole().getId()));}public Collection getAuthorities(Integer role) {List authList getGrantedAuthorities(getRoles(role));return authList;}public List getRoles(Integer role) {List roles new ArrayList();if (role.intValue() 1) {roles.add(ROLE_MODERATOR);roles.add(ROLE_ADMIN);} else if (role.intValue() 2) {roles.add(ROLE_MODERATOR);}return roles;}public static List getGrantedAuthorities(List roles) {List authorities new ArrayList();for (String role : roles) {authorities.add(new SimpleGrantedAuthority(role));}return authorities;}} 该类的主要目的是将应用程序的User类映射到Spring Security的User类。 这是Spring Security的杀手级功能之一。 这样您可以使任何种类的Spring MVC应用程序适应Security模块的使用。 控制器和视图 有关Spring Security的最常见问题之一是如何创建自定义登录表单 。 答案很简单。 您需要使用该表单创建一个JSP文件并在其中指定action属性。 URL映射的大部分取决于spring-security.xml文件 ...http auto-configtrueintercept-url pattern/sec/moderation.html accessROLE_MODERATORintercept-url pattern/admin/* accessROLE_ADMINform-login login-page/user-login.html default-target-url/success-login.html authentication-failure-url/error-login.htmllogout logout-success-url/index.html/logout/form-login/intercept-url/intercept-url/httpauthentication-managerauthentication-provider user-service-refcustomUserDetailsServicepassword-encoder hashplaintext/password-encoder/authentication-provider/authentication-manager ... 如您所见我为以下各项指定了URL登录页面成功登录后的默认页面凭据无效情况下的错误页面。 我也声明了需要一些访问许可的URL。 最重要的是身份验证管理器的声明。 通过这种方式Spring Security将使用数据库来识别用户及其角色。 控制器 Controller public class LinkNavigation {RequestMapping(value/, methodRequestMethod.GET)public ModelAndView homePage() {return new ModelAndView(home);}RequestMapping(value/index, methodRequestMethod.GET)public ModelAndView indexPage() {return new ModelAndView(home);}RequestMapping(value/sec/moderation, methodRequestMethod.GET)public ModelAndView moderatorPage() {return new ModelAndView(moderation);}RequestMapping(value/admin/first, methodRequestMethod.GET)public ModelAndView firstAdminPage() {return new ModelAndView(admin-first);}RequestMapping(value/admin/second, methodRequestMethod.GET)public ModelAndView secondAdminPage() {return new ModelAndView(admin-second);}} 和 Controller public class SecurityNavigation {RequestMapping(value/user-login, methodRequestMethod.GET)public ModelAndView loginForm() {return new ModelAndView(login-form);}RequestMapping(value/error-login, methodRequestMethod.GET)public ModelAndView invalidLogin() {ModelAndView modelAndView new ModelAndView(login-form);modelAndView.addObject(error, true);return modelAndView;}RequestMapping(value/success-login, methodRequestMethod.GET)public ModelAndView successLogin() {return new ModelAndView(success-login);}} 您可以在GitHub上看到的视图 。 请注意在WebAppConfig java类中添加ImportResource“ classpathspring-security.xml”。 摘要 我认为本文将帮助您深入了解Spring Security。 我在这里使用了Hibernate和MySQL因为这样的技术组合在Internet上的其他教程中并不经常使用。 可能您注意到我在项目中使用了一些XML这是因为当前尚无办法使用基于注释的方法来实现所有这些东西。 参考资料 Spring MVC来自JCG合作伙伴 Alexey Zvolinskiy来自Fruzenshtein的注释博客的MySQL和Hibernate的安全性 。 翻译自: https://www.javacodegeeks.com/2013/05/spring-mvc-security-with-mysql-and-hibernate.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/919587.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做网站协议怎么签wordpress 视频

目前,不少企业都使用虚拟化/超融合运行 Kubernetes 和容器化应用。一些用户可能会有疑惑:既然 Kubernetes 可以部署在裸金属上,使用虚拟化不是“多此一举”吗? 在电子书《IT 基础架构团队的 Kubernetes 管理:从入门到…

2025 年空气离合器生产厂家推荐榜:电网冲击缓解技术与可靠性测评,单片空气离合器,多片空气离合器,空气离合器摩擦片,空气离合器密封件公司推荐

在矿山、冶金、水泥等重型工业领域,气动离合器作为磨矿机等大型设备的核心传动部件,其性能直接关系到生产稳定性与成本控制。当前行业正面临多重技术瓶颈:大功率电动机启动时产生的巨大电流常对电网造成强烈冲击,导…

Spring MVC的双向数据绑定

Spring MVC 是一个建立在Servlet API之上的模块化框架,它使用了Model-View-Controller(MVC)架构模式,并提供了一种分离关注点的方法来开发Web应用程序。在Spring MVC中,双向数据绑定是一个核心特性,它允许开发者…

抽象化编程(Abstraction in Programming)

抽象化编程(Abstraction in Programming)是面向对象编程(OOP)中一个非常重要的设计原则,它与我们前面讨论的封装、继承、多态紧密相关。抽象化编程的含义 核心思想: 关注于做什么(What),而不是如何做(How)。…

详细介绍:198种组合算法+优化BiLSTM神经网络+SHAP分析+新数据预测+多输出!深度学习可解释分析,强烈安利,粉丝必备!

详细介绍:198种组合算法+优化BiLSTM神经网络+SHAP分析+新数据预测+多输出!深度学习可解释分析,强烈安利,粉丝必备!2025-09-27 14:31 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; …

太原网站排名外包广州市工程交易中心官网

在面对日益增长的网络安全威胁时,DNS高防和IP高防作为防御策略发挥着重要的作用。虽然两者都旨在保护网络资源免受攻击,但它们在操作方式和防护重点上有着本质的不同。 DNS高防:保护域名解析服务DNS高防,全称是高防御的域名解析服…

网站关键词排名下降做网站 360的好不好

一、KeyStore描述 在 Android 开发中,KeyStore 是一个用于存储密钥和证书的安全容器。它提供了一种安全的方式来存储敏感信息,如密钥对、数字证书等,以防止它们被未授权的应用或攻击者访问。 KeyStore 通常用于加密数据、数字签名、TLS/SSL…

章丘网站优化美工培训班费用一般多少

这个是把<>过滤掉了所以只能用js的事件 ?weya"onfocus"alert(1337)" autofocus"

网站厨师短期培训班做网站实训心得

简单工厂模式、工厂模式和抽象工厂模式都是创建型设计模式&#xff0c;它们之间在目的、实现方式和适用场景上存在显著的区别。以下是对这三种模式的详细比较&#xff1a; 一、定义与目的 简单工厂模式&#xff08;Simple Factory Pattern&#xff09; 定义&#xff1a; 简单工…

STM32定时器(寄存器与HAL库实现) - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

微前端中iframe集成方式与应用微前端框架方式对比

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

配置RedisTemplate序列化机制

在Spring Boot应用程序中配置 RedisTemplate以实现特定序列化机制时,关键是要确保数据在保存到Redis时将Java对象转换成合适的格式,同时在读取时能够正确地将数据转换回Java对象。RedisTemplate提供了灵活的方式来自…

优化器(Optimizer)

优化器(Optimizer)是深度学习和机器学习中最核心的组件之一。 简单来说,优化器的作用就是指导模型如何学习。它决定了在反向传播计算出梯度(模型应该朝哪个方向调整)之后,模型应该以多大的“步伐”和什么样的方式…

为第三方网站做推广合肥seo排名扣费

打开题目 点击1到5号的结果 1号 2号 3号 4号 5号 这里直接令传入的id6 传入id1^1^1 逻辑符号|会被检测到&#xff0c;而&感觉成了注释符&#xff0c;&之后的内容都被替换掉了。 传入id1|1 直接盲注比较慢&#xff0c;还需要利用二分法来编写脚本 这里利用到大佬的脚…

阿里虚拟主机怎么做两个网站公司宣传折页模板

为了实现Windows主机与Linux服务器之间的资源共享&#xff0c;Linux操作系统提供了Samba服务&#xff0c;Samba服务为两种不同的操作系统架起了一座桥梁&#xff0c;使Linux系统和Windows系统之间能够实现互相通信&#xff0c;为广泛的Linux爱好者提供了极大方便。本文简要介绍…

2025 年气动离合器品牌推荐排行榜发布,聚焦博得 PLC 控制技术与降本优势,常开式气动离合器,多片式气动离合器,气动离合器电磁阀,气动离合器气缸,单片式气动离合器工厂推荐

在矿山、冶金、水泥等重型工业领域,气动离合器作为关键传动设备,直接影响着磨矿机等大型机械的运行稳定性与成本控制。当前行业普遍面临三大痛点:大功率电动机启动时的巨大电流易冲击电网,导致电力系统波动;“大马…

Kubernetes Ingress与OpenShift Router的比较分析

Kubernetes Ingress和OpenShift Router都是用于管理外部访问集群内服务的资源,但它们在设计理念、功能特性和使用场景上存在一些差异。 Kubernetes Ingress是一个API对象,它定义了外部访问到集群服务的规则。Ingress…

我国做民宿的网站网页qq登录保护功能怎么关闭

解决方法&#xff1a; 下载 sqlite3.exe 在你的清理失败的路径下查看.svn目录下是否存在一个wc.db文件&#xff0c;把解压好的sqlite3.exe 放在wc.db文件的同一路径下 注意&#xff1a;主要是用sqlite3.exe清理掉wc.db中的相关信息。 通过cmd命令行进入你清理失败的路径&am…

Kubernetes日志管理:使用Loki进行日志采集

在Kubernetes环境中,日志管理是一项关键的运维任务,它帮助开发者和系统管理员监控应用程序的运行状态、诊断问题并确保系统安全。Loki是一个水平可扩展、高可用性、多租户的日志聚合系统,由Grafana Labs开发。它特别…

PySimpleGUI 4.60.5完整控件列表

根据PySimpleGUI 4.60.5官方文档及权威技术博客整理,以下是完整控件列表及示例:序号 控件名 用途 示例1 Text 显示静态文本 sg.Text(欢迎使用, key=-TEXT-)2 Input 单行文本输入 sg.Input(key=-INPUT-, size=20)3 Bu…