Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 9 của 9
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Phân quyền truy cập theo nhóm User trong asp.net c#

    Chào mọi người
    Mình đang gặp rối về vấn đề này mong mọi người giúp đỡ.
    Hiện tại mình có 02 table như sau:
    tbl_NhomNguoiDung(MaNhom,TenNhom,Amin,Xem,Them,Sua ,Xoa,Duyet)
    Trong đó Admin, Xem, Them, Sua, Xoa, Duyet là các quyền để truy cập có kiểu dữ liệu là true false
    và table thứ 2 là
    tbl_NguoiDung(MaNguoiDung,MaDangNhap,MatKhau,HoTen ,Email,MaNhom)

    Giờ mình muốn làm một trang đăng nhập có sữ dụng tất cả quyền của table tbl_NhomNguoiDung thì làm sao mhong mọi người giúp đỡ.
    Hiệntại mình chỉ tạo một trang đăng nhập nhưng không sử dụng được phân quyền của table tbl_NhomNguoiDung

    Code trang đăng nhập chi tiết của mình là:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.SqlClient;
    using System.Data;

    public partial class CMS_Login : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    txtUserName.Focus();
    if (Request.Cookies["Remember"] != null)
    {
    HttpCookie httpCookie = Request.Cookies["UserNameAndTime"];
    txtUserName.Text = httpCookie.Values["MaDangNhap"].ToString();
    }
    }
    public bool isValid(string strUserName)
    {
    int iCount = 0;
    for (int i = 0; i < strUserName.Length; i++)
    {
    if (strUserName[i] == ' ')
    {
    iCount++;
    i = strUserName.Length;
    }
    if (strUserName[i] == '\'')
    {
    iCount++;
    i = strUserName.Length;
    }
    }
    if (iCount > 0) return false;
    else return true;
    }
    protected void btnLogin_Click(object sender, EventArgs e)
    {
    string strUserName = (txtUserName.Text != "") ? txtUserName.Text.Replace("'", "''") : "";
    string strPassword = txtPass.Text;
    if (isValid(strUserName))
    {
    System.Security.Cryptography.MD5CryptoServiceProvi der md5Hasher = new System.Security.Cryptography.MD5CryptoServiceProvi der();
    byte[] hashedDataBytes = md5Hasher.ComputeHash(System.Text.UTF8Encoding.UTF 8.GetBytes(strPassword.Trim()));
    string strEncptPass = Convert.ToBase64String(hashedDataBytes);
    Class_Connect conn = new Class_Connect();
    conn.OpenConn();
    DataSet ds = new DataSet();
    string sql = "select * from tbl_NguoiDung WHERE MaDangNhap='" + strUserName + "' and MatKhau='" + strEncptPass + "' ";
    conn.GetDataSet(ds, "tbl_NguoiDung", sql);
    if (ds.Tables["tbl_NguoiDung"].Rows.Count > 0)
    {
    Session["MaNguoiDung"] = ds.Tables["tbl_NguoiDung"].Rows[0]["MaNguoiDung"].ToString();
    Session["MaDangNhap"] = ds.Tables["tbl_NguoiDung"].Rows[0]["MaDangNhap"].ToString();
    //Session["Email"] = ds.Tables["tbl_NguoiDung"].Rows[0]["Email"].ToString();
    WriteCookie(txtUserName.Text);
    Response.Redirect("Default.aspx");
    }
    else
    {
    lblError.Text = "UserName or Password not Exits !";
    }
    }
    else
    {
    lblError.Text = "UserName or Password not Exits !";
    }
    }

    void WriteCookie(string MaDangNhap)
    {
    if (CheckBoxRememberUserName.Checked)
    {
    HttpCookie httpCookie = new HttpCookie("Remember", "Yes");
    Response.Cookies.Add(httpCookie);
    httpCookie = new HttpCookie("UserNameAndTime");
    httpCookie.Values.Add("MaDangNhap", MaDangNhap);
    httpCookie.Values.Add("Time", DateTime.Now.ToShortDateString());
    Response.Cookies.Add(httpCookie);
    }
    }
    protected void btnClear_Click(object sender, EventArgs e)
    {
    Response.Redirect("~/Default.aspx");
    }
    }



    Và đây là class_connect của mình

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data.SqlClient;
    using System.Data;
    using System.Configuration;
    using System.Windows.Forms;

    /// <summary>
    /// Summary description for Class_Connect
    /// </summary>
    public class Class_Connect
    {
    public Class_Connect()
    {
    //
    // TODO: Add constructor logic here
    //
    }

    // Khai bao bien cuc bo
    SqlConnection conn = new SqlConnection();
    private string knoi = "";

    // Tra ve mot connect tu webconfig
    public static string ConnectionString
    {
    get
    {
    return ConfigurationManager.ConnectionStrings["MrYes"].ConnectionString;
    }
    }

    public void OpenConn()
    {
    try
    {
    if (conn.State == ConnectionState.Closed)
    {
    knoi = ConnectionString; // ConnectionString duoc tra ve tu webconfig
    conn.ConnectionString = ConnectionString; // ConnectionString duoc tra ve tu webconfig
    conn.Open();
    }
    }
    catch
    {
    throw new Exception("Error connect Database");
    }
    }

    public void CloseConn()
    {
    if (conn.State == ConnectionState.Open)
    {
    conn.Close();
    }
    }
    public void GetDataSet(DataSet ds, string strtable, string sql)
    {
    SqlCommand cmd = new SqlCommand(sql, conn);
    SqlDataAdapter da = new SqlDataAdapter();
    cmd.Connection = conn;
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = sql;
    da.SelectCommand = cmd;
    da.Fill(ds, strtable);
    conn.Close();
    }

    public DataTable SelectTable(string Str)
    {
    SqlConnection conn = new SqlConnection(ConnectionString); // ConnectionString duoc tra ve tu webconfig
    DataTable dt = new DataTable();
    SqlDataAdapter Ad = new SqlDataAdapter(Str, conn);
    Ad.Fill(dt);
    conn.Close();
    return dt;
    }
    }

    Hiện tại trang đăng nhập của mình chỉ sữ dụng được bình thường. Mình có lưu lại biến sesion khi đăng nhập.
    Và code trên trang chủ của mình là

    public partial class CMS_Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    if (Session["MaDangNhap"] == null)
    {
    Response.Redirect("Login.aspx");
    }
    lblMaDangNhap.Text = Session["MaDangNhap"].ToString();
    Link();
    }
    .....

    Giờ mình muốn mỗi user khi đăng nhập thành công thì có các quền khác nhau theo từng nhóm

    Mong mọi người giúp đỡ. Trân trọng cảm ơn!

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    nếu làm đơn giản thì bạn Chia Session ra cho từng nhóm quyền (group role), rồi mỗi lần login sẽ validate lại dựa trên dữ liệ u database.
    nếu làm hơi phức tạp chút thì dùng tính năng có sẵn của .NET : Provider
    link : Quản Lý Tài Khoản Bằng Provider MVC3

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Cảm ơn Kenturo nhiều!

    Kenturo hoặc một ai đó có thể giúp mình được không?
    Mình cũng không rõ lắm theo cách của Kenturo là Chia Session ra cho từng nhóm quyền (group role), rồi mỗi lần login sẽ validate lại dựa trên dữ liệu database.
    Bạn có thể hướng dẫn hoặc code giúp mình được không ạ!

    Cảm ơn nhiều!

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    chỉ hướng dẫn bạn hiểu và làm thôi:
    + trong DB: có 2 table là user và groupRole. (referencer key).
    + trong code: khi login thì bạn check nó thuộc groupRole nào, sau đó lưu vào Session.

    rùi if session đó để check groupRole của user để làm việc j đó.


    Mã:
    if(Session["groupRole"] != null && Session["groupRole"].toString().Equal("Group1"){   // xử lý cái j đó với điều kiện đúng.}else{  // popup ra vì ko thuộc điều kiện}

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Ok mình đã làm theo cách của anh Kenturo được rồi. Cảm ơn Kenturo nhiều nhiều!

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trước đây mình có lấy thông tin giá vàng, tỷ giá, chứng khoán hiển thị rất ngon lành: lâu quá không sử dụng đến giờ không biết tại sao mà giá vàng và tỷ giá ngoại tệ không hiển thị được nữa. Mong các bạn giúp đỡ. Code trang html của mình bên dưới. Theo mình biết hiện tại các link này tại sao không tìm thấy được nữa.
    http://vnexpress.net/Service/Gold_Content.js
    http://vnexpress.net/Service/Forex_Content.js
    Có phải là nguyên nhân trên không. Mong các cao thủ chuyên gia giúp đỡ.
    Trân trọng cảm ơn!



    <div class="thongtin">
    <!-- GIA VANG 9999 -->
    <div class="content">
    <div class="tygia">
    <div class="tieude">
    [IMG]./../App_Themes/Themes/Images/giavang.jpg[/IMG]
    <div class="text">
    giá vàng 9999</div>
    </div>
    <div class="donvi">
    ĐVT: triệu đồng/ lượng</div>
    <div class="bangtygia">
    <table cellpadding="0" cellspacing="0" class="table_border">
    <tr class="chudam">
    <td width="30%" class="column">
    Loại
    </td>
    <td class="column">
    Mua
    </td>
    <td class="column">
    Bán
    </td>
    </tr>

    <script type="text/javascript" language="JavaScript" src="http://vnexpress.net/Service/Gold_Content.js"></script>

    <script language="javascript">
    document.write("<tr><td class='column'>SBJ</td><td class='column'>"+vGoldSbjBuy+"</td><td class='column'>"+vGoldSbjSell+"</td></tr>");
    document.write("<tr><td class='column'>SJC</td><td class='column'>"+vGoldSjcBuy+"</td><td class='column'>"+vGoldSjcSell+"</td></tr>");
    </script>

    </table>
    </div>
    </div>
    <div class="gachngang">
    [IMG]./../App_Themes/Themes/Images/gachngang.jpg[/IMG]</div>
    </div>
    <!-- TI GIA NGOAI TE -->
    <div class="content">
    <div class="tygia">
    <div class="tieude">
    [IMG]./../App_Themes/Themes/Images/tigia.jpg[/IMG]
    <div class="text">
    Tỉ giá ngoại tệ</div>
    </div>
    <div class="bangtygia">
    <table cellpadding="0" cellspacing="0" class="table_border">
    <tr class="chudam">
    <td width="30%" class="column">
    Loại
    </td>
    <td class="column">
    Tỉ giá
    </td>
    </tr>

    <script type="text/javascript" language="JavaScript" src="http://vnexpress.net/Service/Forex_Content.js"></script>

    <script language="javascript">
    for(var i=0;i<=5;i++){
    if((vCosts[i] != '-')&&(vCosts[i] != '')){
    document.write("<tr><td class='column'>"+vForexs[i]+"</td><td class='column'>"+vCosts[i]+"</td></tr>");
    }
    }
    </script>

    </table>
    </div>
    </div>
    <div class="gachngang">
    [IMG]./../App_Themes/Themes/Images/gachngang.jpg[/IMG]</div>
    </div>
    <!-- CHUNG KHOAN -->

    <script language="javascript">
    function switchActive(i){
    if(i == 0){
    document.getElementById('cHoSTC').className = 'cActive column';
    document.getElementById('cHaSTC').className = 'cNoActive column';
    document.getElementById('aHoSTC').className = 'Active';
    document.getElementById('aHaSTC').className = 'NoActive';
    }
    else{
    document.getElementById('cHoSTC').className = 'cNoActive column';
    document.getElementById('cHaSTC').className = 'cActive column';
    document.getElementById('aHoSTC').className = 'NoActive';
    document.getElementById('aHaSTC').className = 'Active';
    }
    }
    </script>

    <div class="content">
    <div class="tygia">
    <div class="tieude">
    [IMG]./../App_Themes/Themes/Images/chungkhoan.jpg[/IMG]
    <div class="text">
    Chứng khoán</div>
    </div>
    <div class="bangtygia">
    <table cellpadding="0" cellspacing="0" class="table_border">
    <tr>
    <td id="cHoSTC" colspan="2" align="center">
    <a href="http://vnexpress.net/User/ck/hcms/HCMStockSmall.asp" target="ifrmChungKhoan"
    id="aHoSTC" class="NoActive" onclick="switchActive(0);" onmouseover="window.status='Chung khoan TP HCM'; return true;"
    onmouseout="window.status=''; return true;">HCM STC</a>
    </td>
    <td id="cHaSTC" class="cActive column" colspan="2" align="center">
    <a href="http://vnexpress.net/User/ck/hns/HNStockSmall.asp" target="ifrmChungKhoan"
    id="aHaSTC" class="Active" onclick="switchActive(1);" onmouseover="window.status='Chung khoan TP Ha Noi'; return true;"
    onmouseout="window.status=''; return true;">HN STC</a>
    </td>
    </tr>
    <tr>
    <td colspan="5">
    <table border="0" cellpadding="0" cellspacing="0" align="center" width="95%">
    <tr class="chudam">
    <td width="36">
    CK
    </td>
    <td width="28">
    TC
    </td>
    <td width="32">
    Giá
    </td>
    <td width="38">
    KL
    </td>
    <td class="43">
    +/-
    </td>
    </tr>
    </table>
    </td>
    </tr>
    <tr>
    <td colspan="5" class="column">
    <iframe id="ifrmChungKhoan" name="ifrmChungKhoan" height="225" width="181" src="http://vnexpress.net/User/ck/hns/HNStockSmall.asp"
    noresize border="false" frameborder="0" scrolling="no"></iframe>
    </td>
    </tr>
    </table>
    </div>
    </div>
    </div>
    </div>


    Xem hình ảnh
    http://www.mediafire.com/view/giz8pu...tingiavang.jpg

  7. #7
    bây giờ bên vnexpress chuyển hết về file này nhé
    http://st.f2.vnecdn.net/j/v101/block/tygia.js

  8. #8
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Sao mình nhúng vào trang html nó không chạy được vậy bạn.
    Bạn có thể hướng dẫn cách nhúng vào trang asp.net được không nhỉ! Cảm ơn!

  9. #9
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Sao chưa thấy thành viên năng nỗ nào giúp đỡ mình với nhỉ.
    Các bạn giúp mình với!!!!!!!!!

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •