登录功能

1 登录页面+表单提交(基于easyui)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>XXX</title>
    <%@ include file="/WEB-INF/views/head.jsp"%>
    <script>
        function submitForm() {
            //直接提交
            // 对咱们来说,这是一个Ajax请求
            $('#loginForm').form('submit', {
                url:"/login",
                onSubmit: function(){
                    return $(this).form('validate');
                },
                //访问成功后的功能
                success:function(data){
                    //{"success":false,"msg":"用户名错误!"}
                    //Object { success: false, msg: "用户名或者密码错误!" }
                    var result = JSON.parse(data);
                    if(result.success){
                        //访问成功 -> 跳到主页面(Js怎么跳转)
                        // location:有很多当前页面的位置信息
                        // JS的BOM【浏览器对象模型】部分
                        window.location.href ="/main";
                    }else{
                        //访问失败 -> 给出提示
                        $.messager.alert('错误',result.msg);
                    }
                }
            });

        }
    </script>
</head>
<body>


<div align="center" style="margin-top: 100px;">
    <div class="easyui-panel" title="用户登陆" style="width: 350px; height: 240px;">
        <form id="loginForm" class="easyui-form" method="post">
            <table align="center" style="margin-top: 15px;">
                <tr height="20">
                    <td>用户名:</td>
                </tr>
                <tr height="10">
                    <td><input name="username" class="easyui-validatebox" required="true" value="admin" /></td>
                </tr>
                <tr height="20">
                    <td>密&emsp;码:</td>
                </tr>
                <tr height="10">
                    <td><input name="password" type="password" class="easyui-validatebox" required="true" value="admin" /></td>
                </tr>
                <tr height="40">
                    <td align="center"><a href="javascript:;" class="easyui-linkbutton" onclick="submitForm();">登陆</a> <a
                            href="javascript:;" class="easyui-linkbutton" onclick="resetForm();">重置</a></td>
                </tr>
            </table>
        </form>
    </div>
</div>
</body>
</html>

2 后台的登录支持

  1. 根据get与post请求访问不同的方法(RESTful风格)
  2. 返回Ajax必需加:@ResponseBody
@Controller
public class LoginController {

    /**
     * RESTful : 是一种风格
     *  一个请求(路径,方式)对应一个资源
     */
    @RequestMapping(value = "/login",method= RequestMethod.GET)
    public String index(){
            return "login";
    }

    /**
     * Ajax请求,应该是返回数据,而不是跳转页面
     *      跳转页面:1.报错  2.把跳转到的页面全部传回去
     * @return
     */
    @RequestMapping(value = "/login",method= RequestMethod.POST)
    @ResponseBody
    public JsonResult login(String username, String password){
        //拿到当前用户(有可能是游客)
        Subject subject = SecurityUtils.getSubject();
        //直接登录
        try {
            UsernamePasswordToken token = new UsernamePasswordToken(username,password);
            subject.login(token);
        } catch (UnknownAccountException e) {
            e.printStackTrace();
            System.out.println("用户名错误");
            return new JsonResult(false,"用户名错误!");
        } catch (IncorrectCredentialsException e) {
            e.printStackTrace();
            System.out.println("密码错误");
            return new JsonResult(false,"用户名或者密码错误!");
        } catch (AuthenticationException e) {
            e.printStackTrace();
            System.out.println("神迷错误");
            return new JsonResult(false,"神迷错误!");
        }

        return new JsonResult();
    }

    @RequestMapping("/logout")
    public String logout(){
        //完成注销功能
        Subject subject = SecurityUtils.getSubject();
        subject.logout();
        return "redirect:login";
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 可以使用Spring Security实现登录功能,其中需要配置AuthenticationProvider和UserDetailsService来完成用户的认证和授权。具体实现方法请参考Spring官方文档或相关的教程。 ### 回答2: Spring Boot 是一个开源的Java框架,提供了简化的配置和开发过程,可以快速构建独立的、生产级别的Spring应用程序。对于登录功能,在Spring Boot中可以通过以下步骤实现: 1. 添加相关依赖:在项目的pom.xml文件中添加Spring Security的依赖,以及用于持久化数据的数据库依赖(如MySQL)。 2. 创建用户实体类:创建一个User类,用于存储用户的信息,可以包含用户名、密码、角色等字段。通过注解方式与数据库表进行映射。 3. 创建用户仓库:创建一个UserRepository接口,继承自Spring Data JPA的CrudRepository接口,用于与数据库进行交互,实现用户的增删改查等操作。 4. 创建验证逻辑:创建一个自定义的UserDetailsService实现类,实现loadUserByUsername方法,用于根据用户名从数据库中加载用户信息。同时,可以使用PasswordEncoder来对用户密码进行加密。 5. 配置Spring Security:创建一个SecurityConfig类,通过@EnableWebSecurity注解开启Web安全配置,再通过@Configuration注解标识为配置类。在配置类中,重写configure方法,配置用户认证和授权的规则,如设置登录页面、登录成功后的跳转页面等。 6. 创建登录页面:创建一个login.html页面,用于用户输入用户名和密码,通过POST请求提交表单数据。 7. 处理登录请求:创建一个Controller类,用于处理用户登录请求。接收用户名和密码参数后,调用Spring Security的AuthenticationManager进行用户认证。认证成功后,可以将用户信息存在Session中,或者使用JWT生成Token返回给客户端。 8. 页面跳转和鉴权:根据认证和授权规则,配置不同用户角色的访问权限,实现登录后的页面跳转和功能鉴权。 以上是使用Spring Boot实现登录功能的一般步骤,可以根据具体需求进行适当的调整和扩展,以满足实际业务需求。 ### 回答3: Spring Boot是一个Java开发的框架,可以帮助开发者快速构建基于Spring的应用程序。Spring Boot提供了很多开箱即用的功能,其中包括登录功能。 在Spring Boot中实现登录功能有几个关键的步骤: 第一步是创建一个登录页面,可以使用HTML和CSS来设计页面的样式,并使用Thymeleaf等模板引擎来渲染页面。在页面中,我们需要提供一个表单,用于用户输入用户名和密码。 第二步是创建一个用户验证的接口,通过接收用户输入的用户名和密码,并与数据库或其他验证服务进行比对,来判断用户输入的用户名和密码是否正确。Spring Boot提供了一些安全框架,如Spring Security,可以方便地处理用户验证过程。 第三步是创建一个登录成功后的跳转页面或返回数据。当用户输入的用户名和密码正确时,我们可以将用户信息保存到会话中,然后重定向到一个登录成功的页面,或返回一个成功的提示。如果用户名和密码不正确,则可以返回一个错误提示给用户。 在Spring Boot中,可以使用一些注解来实现登录功能。例如,使用@Controller注解来标识登录相关的请求处理器,使用@RequestMapping注解来映射请求路径,使用@RequestParam注解来接收请求参数等。 需要注意的是,在实现登录功能时,我们要确保用户的密码是安全的,通常是通过加密存储在数据库中。此外,还需要进行用户的鉴权和权限管理,以确保只有合法用户可以访问相应的资源。 总的来说,Spring Boot提供了丰富的功能和工具,可以方便地实现登录功能。通过合理的设计和编码实践,我们可以创建一个安全可靠的登录系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心之所向...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值