java 如何实现同一账户登录验证

Python010

java 如何实现同一账户登录验证,第1张

今天继续讨论?-0-#这个只需要session和application就好了,用户登录时,这样写:User

user

=

dao.login(userName,

password)//

数据库中判断用户名和密码if

(null

!=

user)

{//

表示用户存在

session.setAttribute("user",

user)//

把用户放进session中

application.setAttribute(userName,

session.getId())/*

把用户所在的sessionId放进application中,首先要明白一点,一个session对应一个浏览器,其次要注意一点,userName必须是唯一的*/}当用户访问到其他url的时候,可以在过滤器或你的拦截器中这样写:User

user

=

(User)

session.getAttribute("user")//

从session中取出用户if

(null

==

user)

{//

未登录或者登录已经过期

response.sendRedirect(request.getContextPath())//

跳转到首页或登录页面}String

sessionId

=

(String)

application.getAttribute(user.getUserName())if

(null

==

sessionId

||

!sessionId.equals(session.getId()))

{/*这说明用户已经在其他电脑或其它浏览器登录了,那么之前登录的session就无效了,自动被后面的登录给踢掉*/

response.sendRedirect(request.getContextPath())//

跳转到首页或登录页面}chain.doFilter(request,

response)//

通过验证,放行用户进入目标url这种方式是我的一个前辈想到的,我们公司的所有项目都采纳了这种方式,确保一个账号只能在一个浏览器中使用

以下代码就是了。

详细参照附件

import java.awt.GridLayout

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JPanel

import javax.swing.JPasswordField

import javax.swing.JTextField

public class LoginJFrame extends JFrame implements ActionListener {

    private JTextField text_username

    private JPasswordField password_pwd

    private JButton button_lg, button_close

    private JLabel msgArea

    public LoginJFrame() {

        super("登录")

        this.setBounds(500, 240, 320, 260)

        setResizable(false)

        setBackground(java.awt.Color.lightGray)

        setDefaultCloseOperation(EXIT_ON_CLOSE)

        getContentPane().setLayout(new GridLayout(4, 1, 20, 10))

        getContentPane().add(new JLabel("在线考试系统用户登录", JLabel.CENTER))

        JPanel panel_1 = new JPanel(new GridLayout(2, 2, 0, 5))

        getContentPane().add(panel_1)

        panel_1.add(new JLabel("用户名:", JLabel.CENTER))

        text_username = new JTextField(20)

        panel_1.add(text_username)

        panel_1.add(new JLabel("密    码:", JLabel.CENTER))

        password_pwd = new JPasswordField(20)

        panel_1.add(password_pwd)

        JPanel panel_2 = new JPanel(new GridLayout(1, 2, 30, 0))

        getContentPane().add(panel_2)

        button_lg = new JButton("登陆")

        panel_2.add(button_lg)

        button_lg.addActionListener(this)

        button_close = new JButton("注册")

        panel_2.add(button_close)

        setVisible(true)

        // 添加一个控件用于显示提示信息

        JPanel panel_3 = new JPanel()

        msgArea = new JLabel()

        getContentPane().add(panel_3.add(msgArea))

        setVisible(true)

    }

    public static void main(String arg[]) {

        new LoginJFrame()

    }

    public void actionPerformed(ActionEvent e) {

        // 登录按钮

        if (e.getSource() == button_lg) {

            if (text_username.getText().isEmpty() && password_pwd.getText().isEmpty()) {

                msgArea.setText("请输入用户名和密码!")

                return

            }

            if (text_username.getText().isEmpty()) {

                msgArea.setText("用户名不能为空!")

                return

            }

            if (password_pwd.getText().isEmpty()) {

                msgArea.setText("密码不能为空!")

                return

            }

            // TODO 连接数据库验证用户

        }

    }

}

实现jiava短信验证码可以按下面的步奏进行:

1、首先,找到一个支持Java语言的接口短信平台。

2、接着下载接口文档,和自己的开发平台进行对接。

3、注意在对接之前测试一下短信的速度,一旦对接好想换就比较麻烦,之前就吃过这个亏,最后有个朋友介绍我去短信网。

4、如果要购买的话,一定要多测试几家。

如果在碰到有疑问的地方一定要和技术或者客服多多沟通。