相关疑难解决方法(0)

ASP.NET MVC表单身份验证+授权属性+简单角色

我正在尝试向ASP.NET MVC应用程序添加简单的身份验证和授权.

我只是试图在基本的表单身份验证上增加一些功能(由于简单性和自定义数据库结构)

假设这是我的数据库结构:用户:用户名密码角色(理想情况下是一些枚举.如果需要,则为字符串.目前,用户只有一个角色,但这可能会改变)

高级问题:鉴于上述数据库结构,我希望能够做到以下几点:

  • 使用表单身份验证简单登录
  • 用以下方式装饰我的行为:[授权(角色= {MyRoles.Admin,MyRoles.Member})]
  • 在我的视图中使用角色(以确定在某些部分中显示的链接)

目前,我真正确定的是如何进行身份验证.在那之后,我迷路了.我不确定我在哪个位置获取用户角色(登录,每次授权?).由于我的角色可能不是字符串,我不确定它们如何适应User.IsInRole().

现在,我在这里问,因为我没有找到一个"简单"完成我需要的东西.我见过多个例子.

对于身份验证

  • 我们有简单的用户验证来检查数据库和"SetAuthCookie"
  • 或者我们覆盖成员资格提供程序并在ValidateUser中执行此操作.在其中任何一个中,我不确定如何处理我的简单用户角色,以便它们使用:HttpContext.Current.User.IsInRole("Administrator")此外,我不知道如何修改它以使用我的枚举值.

对于授权,我看到:

  • 派生AuthorizeAttribute并实现AuthorizeCore OR OnAuthorization来处理角色?
  • 实施IPrincipal?

任何帮助将不胜感激.但是,我担心我可能需要很多细节,因为我用Google搜索的内容似乎都不适合我需要做的事情.

asp.net-mvc authorization forms-authentication

54
推荐指数
2
解决办法
6万
查看次数

Asp.net MVC授权属性,重定向到自定义"无权限"页面

response 302当经过身份验证的用户没有权限时,Asp.net MVC2会重定向到登录页面.

我想分成两个动作

  1. 如果用户未经过身份验证,则执行其操作,重定向到登录页面.
  2. 如果用户已通过身份验证但没有必需的权限,则返回相应的http状态代码并显示没有权限的dude页面.

有什么办法吗?或者我在授权和表单身份验证方面做错了什么?我能想到的唯一方法是编写自定义授权属性,我想避免使用它.

asp.net-mvc asp.net-mvc-2

32
推荐指数
4
解决办法
3万
查看次数

如果在MVC 3中未经过身份验证,如何轻松重定向?

我是ASP.NET的新手,我正在尝试找到一种方法,可以轻松地将未经身份验证的用户从站点上的任何页面重定向到登录页面.如果有另一个选项,我宁愿不在每个HTTP GET函数中放入以下代码.

if (!Request.IsAuthenticated)
{
     return RedirectToAction("LogOn", "Account");
}
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc-3

19
推荐指数
2
解决办法
4万
查看次数

filterContext.Cancel(ASP.NET MVC)发生了什么

在RC1之前,我们做了类似这样的事情:

public void OnAuthorization(AuthorizationContext filterContext)
    {
        if (whatever)
        {
            filterContext.Cancel();
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在已经不见了,我们如何用RC1实现相同的结果?

谢谢,

凯尔

c# asp.net-mvc authorization

10
推荐指数
1
解决办法
2566
查看次数

自定义授权过滤器属性参数

我有以下要求来实现访问控制列表

public class SecurityObject{
public string Key{get;set;}
public string DisplayName{get;set;}
public bool isAllowed{get;set;}
}

public class Role{
List<SecurityObject> AccessibleObjects{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

目前我使用表单身份验证进行基本授权.以下是我的代码

的Global.asax.cs

 public class MvcApplication : System.Web.HttpApplication
 {
    public override void Init()
    {
        this.PostAuthenticateRequest += new 
                           EventHandler(MvcApplication_PostAuthenticateRequest);

        base.Init();
    }
    void MvcApplication_PostAuthenticateRequest(object sender, EventArgs e)
    {
      HttpCookie authCookie =
       HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName];
        if (authCookie != null)
        {
            string encTicket = authCookie.Value;
            if (!String.IsNullOrEmpty(encTicket))
            {
                FormsAuthenticationTicket ticket = 
                                 FormsAuthentication.Decrypt(encTicket);

                string[] userData = ticket.UserData.Split(new string[] { "___" },
                                 StringSplitOptions.None);
                string[] roles = null;
                if (userData.Length …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

4
推荐指数
2
解决办法
5749
查看次数