当前位置:编程学习 > C#/ASP.NET >>

怎样获取当前登录用户的ID(或用户名)?

用户信息都在sql中,怎么获得当前用户的信息? --------------------编程问答-------------------- 你可以在设个全局变量。。然后在登入的时候保存用户的信息比如说账户、名称、卡号等等
用的时候直接调用就行了 --------------------编程问答--------------------
引用 1 楼 q740362425 的回复:
你可以在设个全局变量。。然后在登入的时候保存用户的信息比如说账户、名称、卡号等等
用的时候直接调用就行了

能说得更详细点么?比如保存用户的信息的代码要怎么写,是写在登录的界面的程序里还是写在哪里,然后要怎么读取,因为这是个很大的软件,有好多窗口- -本人不是学这方面的,不太懂 --------------------编程问答-------------------- 其实我也是个新手..只不过做的项目刚好是登陆那地方

“项目”-“添加模块”:
Module Variable
    Public User As string
    Public UserNAME As string
End Module

然后登陆的时候给 User  赋值 --------------------编程问答--------------------
引用 3 楼 q740362425 的回复:
其实我也是个新手..只不过做的项目刚好是登陆那地方

“项目”-“添加模块”:
Module Variable
    Public User As string
    Public UserNAME As string
End Module

然后登陆的时候给 User  赋值

Private Sub Button_login_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_login.Click
        If TextBox_user.Text.Trim = "" Then
            MsgBox("用户名不能为空!", MsgBoxStyle.Critical, "错误")
            TextBox_user.Focus()
            Exit Sub
        End If
        If TextBox_pwd.Text.Trim = "" Then
            MsgBox("密码不能为空!", MsgBoxStyle.Critical, "错误")
            TextBox_pwd.Focus()
            Exit Sub
        End If

        Dim sql As String
        Dim myconn As Odbc.OdbcConnection = New Odbc.OdbcConnection
        myconn.ConnectionString = odbcProductString
        Dim mycomm As Odbc.OdbcCommand = New Odbc.OdbcCommand
        mycomm.Connection = myconn
        Dim myreader As Odbc.OdbcDataReader
        Try
            sql = "select 用户名,真实姓名,密码  from 用户基本信息表 where 用户名='" + TextBox_user.Text.Trim + "' and 密码='" + TextBox_pwd.Text.Trim + "'"
            mycomm.CommandText = sql
            myconn.Open()
            myreader = mycomm.ExecuteReader
            If Not myreader.HasRows Then
                MsgBox("用户名或密码错!", MsgBoxStyle.Critical, "错误")
                Exit Sub
            End If
            myreader.Read()
            当前用户 = myreader.GetString(0).Trim
            当前用户姓名 = myreader.GetString(1).Trim
            用户密码 = myreader.GetString(2).Trim
            Me.Hide()
            主窗体对象.ShowDialog()      '显示主窗体
        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical)
        End Try
    End Sub

这是登录窗口的代码,给user赋值要怎么弄?
还有我要调用的用户ID是在另外一个程序中的,是不是要将赋值后的内容存入数据库? --------------------编程问答-------------------- 你把
If myreader.Read = ture Then
    USER = myreader("用户名")
   ……
   ……
else
    MsgBox("用户名或密码错!", MsgBoxStyle.Critical, "错误")
    Exit Sub
End If

前提是你有弄好变量

之后要用户名就直接用USER。。不过建议名称弄得复杂点 比如说g_User之类的

因为项目没在身上,登入也做了好久了 有些只能你自己判断了 --------------------编程问答--------------------
引用 5 楼 q740362425 的回复:
你把
If myreader.Read = ture Then
    USER = myreader("用户名")
   ……
   ……
else
    MsgBox("用户名或密码错!", MsgBoxStyle.Critical, "错误")
    Exit Sub
End If

前提是你有弄好变量

之后要用户名就直接用USER。。不过建议名称弄得复杂点 比如说g_User之类的

因为项目没在身上,登入也做了好久了 有些只能你自己判断了


这样怎么解决? --------------------编程问答--------------------
引用 6 楼 yzt3639 的回复:
Quote: 引用 5 楼 q740362425 的回复:

你把
If myreader.Read = ture Then
    USER = myreader("用户名")
   ……
   ……
else
    MsgBox("用户名或密码错!", MsgBoxStyle.Critical, "错误")
    Exit Sub
End If

前提是你有弄好变量

之后要用户名就直接用USER。。不过建议名称弄得复杂点 比如说g_User之类的

因为项目没在身上,登入也做了好久了 有些只能你自己判断了


这样怎么解决?
不好意识。。这应该是手误。。是 True.... --------------------编程问答--------------------
引用 2 楼 yzt3639 的回复:
 能说得更详细点么?比如保存用户的信息的代码要怎么写,是写在登录的界面的程序里还是写在哪里,然后要怎么读取,因为这是个很大的软件,有好多窗口- -本人不是学这方面的,不太懂 
咳,“很大软件”怎么会跑上csdn问这种问题而不问同事呢?是不是你们的公司都是葫芦娃都会自动长成巨无霸啊?

如果你是那种进程稳定的程序,例如wpf、winform等,那么你可以在一个class中声明一个static变量,那么整个项目(不管是窗口还是用户控件)就都可以访问它了。而假设是自己有多个工程,那么你可以选择比较底层的一个工程,声明变量。

如果你是那种进程不稳定的程序例如asp.net随时会重启,或者是silverlight程序但是仍然希望登录信息保存在应用程序之外的网页上,那么你可以使用cookie。 --------------------编程问答--------------------
引用 8 楼 sp1234 的回复:
Quote: 引用 2 楼 yzt3639 的回复:

 能说得更详细点么?比如保存用户的信息的代码要怎么写,是写在登录的界面的程序里还是写在哪里,然后要怎么读取,因为这是个很大的软件,有好多窗口- -本人不是学这方面的,不太懂 
咳,“很大软件”怎么会跑上csdn问这种问题而不问同事呢?是不是你们的公司都是葫芦娃都会自动长成巨无霸啊?

如果你是那种进程稳定的程序,例如wpf、winform等,那么你可以在一个class中声明一个static变量,那么整个项目(不管是窗口还是用户控件)就都可以访问它了。而假设是自己有多个工程,那么你可以选择比较底层的一个工程,声明变量。

如果你是那种进程不稳定的程序例如asp.net随时会重启,或者是silverlight程序但是仍然希望登录信息保存在应用程序之外的网页上,那么你可以使用cookie。

这个是本人的毕业设计,原程序是老师写的。。。 --------------------编程问答--------------------
引用 7 楼 q740362425 的回复:
Quote: 引用 6 楼 yzt3639 的回复:

Quote: 引用 5 楼 q740362425 的回复:

你把
If myreader.Read = ture Then
    USER = myreader("用户名")
   ……
   ……
else
    MsgBox("用户名或密码错!", MsgBoxStyle.Critical, "错误")
    Exit Sub
End If

前提是你有弄好变量

之后要用户名就直接用USER。。不过建议名称弄得复杂点 比如说g_User之类的

因为项目没在身上,登入也做了好久了 有些只能你自己判断了


这样怎么解决?
不好意识。。这应该是手误。。是 True....

现在这个是实现了,但是又出现了其他的问题,本来这个软件是不同用户有不同的权限就能有不同的功能的,但是改完这里,然后在权限授予功能那里读取了当前用户的ID,这里都没什么问题,但是,现在每个用户都有了全部的功能- - --------------------编程问答--------------------
引用 10 楼 yzt3639 的回复:
Quote: 引用 7 楼 q740362425 的回复:

Quote: 引用 6 楼 yzt3639 的回复:

Quote: 引用 5 楼 q740362425 的回复:

你把
If myreader.Read = ture Then
    USER = myreader("用户名")
   ……
   ……
else
    MsgBox("用户名或密码错!", MsgBoxStyle.Critical, "错误")
    Exit Sub
End If

前提是你有弄好变量

之后要用户名就直接用USER。。不过建议名称弄得复杂点 比如说g_User之类的

因为项目没在身上,登入也做了好久了 有些只能你自己判断了


这样怎么解决?
不好意识。。这应该是手误。。是 True....

现在这个是实现了,但是又出现了其他的问题,本来这个软件是不同用户有不同的权限就能有不同的功能的,但是改完这里,然后在权限授予功能那里读取了当前用户的ID,这里都没什么问题,但是,现在每个用户都有了全部的功能- -
那应该是赋予权限那有分歧了,你可以断点看下是怎么赋予权限的。如果是简单的权限的话,可以和用户名一样直接在登录的时候就弄个变量,如果比较特殊的就麻烦了,权限基本是涉及到整个项目的,比如说按钮之类的,要改起来很麻烦的,得每个地方都去看看 --------------------编程问答-------------------- 那么除了问师兄弟,再问老师呗。

即使有些老师教出来的学生,也往往跟没不会参与到“很大软件”的开发中。他们总是以为编软件就是定义好关系数据库结构,然后照着Petshop的八股形式写一堆DAL,最后按数据库表结构而堆砌出增删改查界面来就是“很大软件”了。

实际上很大软件,除非是那种容易被人忽悠和八股的所谓SOA概念以外,假设你参与写一个“很大的”UI端软件,要知道这种软件都是“插件化、控件化”地相互插在一起的。比如说有8个用来处理和显示用户资料的控件(从2000行的程序到5行的小程序都有可能),那么你的UI程序中凡是用到那些的,你只要用鼠标拖进来就行了。假设一个程序中有100个局部其详关于用户显示部分调用了这8个插件,并且这8个部分内部有只有一个数据适配器用来为它们提供数据上下传送机制,那么100个局部并发功能的程序其访问数据库的“用户”信息时,就只有一个数据机制来控制它。

这是“很大软件”的基本架构概念。

而有些学生甚至教师,可能离实际开发太远了,以为什么东西其下一层都是访问数据库。于是以为一个有着100个局部设计的程序,同一时间每一个部门都各自调用DAL方法去访问数据库,各自为政。可想而这种程序其实际运行效率会多么慢,而且数据的改变无法即时(在内存内)立刻触发其它相关联的组件双向修改界面。我把这种所谓的分层架构方式,叫做“竖井式思维”。

真正的“很大的软件”就像精密的机械一样是各个模块互相关联互相影响的,不是什么简单的上下层关系,而是有着“接口、方法、回调、协作、从UI触发灵活组合”等概念为核心的体系架构。那些只会僵化地以为UI软件各自访问服务器的方式,只能写一些小页面,而不能写出“很大的软件”。 --------------------编程问答-------------------- 你整个问题的思路就是“竖井式”地去想你要写的这块程序如何以“增删改查”的sql语句去访问服务器,你只是想能访问数据库就行了,根本不注重“很大的软件”需要服从整体UI内部复杂的组件/插件架构的问题。

虽然你的问题我觉得幼稚得不可思议,但是仔细想一想,确实很典型,值得我结合我最近观察到一些“很大的软件”的失败原因的总结一下。

我发现某些教师带着学生做软件就是有这个毛病,根本教不会学生做“很大的软件”。 --------------------编程问答-------------------- 我建议你找个很正会做“很大的软件”(但绝对不是那种OA、堆砌菜单式的)的项目组去学习学习。不要在学校里耽误了。
补充:.NET技术 ,  VB.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,