【问题标题】:Check Roles in Webmatrix检查 Webmatrix 中的角色
【发布时间】:2016-06-21 08:01:12
【问题描述】:

我在 pages_UsersInRoles 中添加了两个用户和两个角色。我正在尝试检查登录到应用程序的用户的角色。

这是我的代码:

var UserId = WebSecurity.GetUserId(HttpContext.Current.User.Identity.Name);
var User = WebSecurity.CurrentUserName;
var db = Database.Open("ApplicationServices");
var stQueryString = "SELECT * FROM Table1 WHERE (UserId) = (UserId) ORDER BY SubmitDate DESC";
var data = db.Query(stQueryString, UserId);  
var grid = new WebGrid(data, rowsPerPage:20);

var AdminQueryString = "SELECT * FROM Table1 ORDER BY SubmitDate DESC";
var AdminData = db.Query(AdminQueryString);
var AdminGrid = new WebGrid(AdminData, rowsPerPage:20);

 <div id="Divgrid">
     @if (Roles.IsUserInRole(UserId, "admin") && (AdminData.Any())){
              @AdminGrid.GetHtml(
              tableStyle: "grid",
              headerStyle: "grid-header",
              footerStyle: "grid-footer",
              alternatingRowStyle: "grid-alternating-row",
              selectedRowStyle: "grid-selected-row",
              rowStyle: "grid-row-style",
              columns: AdminGrid.Columns(
                   AdminGrid.Column(header:"", format:@<a href="View/@item.Id">View</a>),
                   AdminGrid.Column(header:"", format:@<a href="Treatment/@item.Id">Treatment</a>),
                   AdminGrid.Column("Name", format:@<text>@item.ClientName</text>),
                   AdminGrid.Column("Date", format:@<text>@item.SubmitDate</text>))) }
        else if (Roles.IsUserInRole(UserId, "user") && (data.Any())) {
                 @grid.GetHtml(
                 tableStyle: "grid",
                 headerStyle: "grid-header",
                 footerStyle: "grid-footer",
                 alternatingRowStyle: "grid-alternating-row",
                 selectedRowStyle: "grid-selected-row",
                 rowStyle: "grid-row-style",
                 columns: grid.Columns(
                      grid.Column(header:"", format:@<a href="View/@item.Id">View</a>),
                      grid.Column(header:"", format:@<a href="Treatment/@item.Id">Treatment</a>),
                      grid.Column("Name", format:@<text>@item.ClientName</text>),
                      grid.Column("Date", format:@<text>@item.SubmitDate</text>))) }                    

   </div>

这是我得到的错误:

CS1502:“System.Web.Security.Roles.IsUserInRole(string, string)”的最佳重载方法匹配有一些无效参数

【问题讨论】:

    标签: razor roles webmatrix razor-2 user-roles


    【解决方案1】:

    IsUserInRole 有两个参数,第一个是用户名,而不是用户 ID。您可以使用 WebSecurity.CurrentUserName 代替您拥有 UserID 的位置。

    一个问题是查询需要更改以允许将用户名作为参数传递:

    var stQueryString = "SELECT * FROM Table1 WHERE UserId = @0 ORDER BY SubmitDate DESC";
    

    @0 表示接受 Query 中传递的参数。

    【讨论】:

    • 我试过了,虽然它没有给我错误,但它也无法识别角色。我应该只让一个人进入网格,而不是每个人。
    • 创建 adminData 和 adminGrid 的其余代码是什么样的?那里可能有一个错误。
    • 我编辑了我的回复。现在,用户只会取回他的行,而管理员应该取回所有行
    猜你喜欢
    • 2019-10-19
    • 2017-08-25
    • 2014-06-22
    • 2022-10-16
    • 1970-01-01
    • 2020-10-06
    • 2018-02-07
    • 1970-01-01
    • 2021-02-24
    相关资源
    最近更新 更多