English 中文(简体)
采用作为p.net的认证,以习俗认证
原标题:using asp.net authentication with custom authentication

这里是我的设想。

我拥有另一个领域的认证网络服务。 现在,我想把用户名称和密码发送给这个外部领域进行认证。 在用户获得认证(Returated true)时,我希望ASP.net进一步作出这一认证,让用户能够进入并向我提供所有可进入的作为p.net标准公用事业,如目前的用户、被授权者、角色等,供用户使用、认证。 我希望这一点是有意义的。

最佳回答

这不是一个问题。 你可以选择多种办法。 一种做法是采用你自己的安全模式来混合形式。

基本想法是让Austh表格为持证用户创建和管理机票(以加密票的形式)。 该机票用于确定某人是否被gged住以及他们是谁。 那么,你就能够把任何额外的安全相关逻辑混为一谈。

为了处理日志的要求,你只有一名控制员,并像你通常那样采取行动。 注:在以下例子中,我就<代码> 缩略语/code>、你正在使用的认证服务,以及如果是,它会返回的物体作出一些假设。 你必须按实际逻辑行事。

public ActionResult Login(LoginViewModel model)
{
      // make sure the user filled out the login fields correctly
      if (!ModelState.IsValid) return View(model);

      // authenticate the user here
      var authenticatedUser = AuthorizeUserUsingRemoteWebService(model.Username, model.Password);

      if (authenticatedUser.IsAuthenticated) 
      {
         // create forms auth ticket cookie and redirect to the home page
         FormsAuthentication.SetAuthCookie(authenticatedUser.Username);

         return RedirectToAction("Index", "Home");
      }

     // authentication failed, so show the login page again 
     return View(model);
}

除此以外,您还可能有一个处理澳大利亚特有重新申请活动的吉大港定居方案单元。 你的模块将在Austh HTTP模块之后登记,因此,该模块将已经处理用户是否贴上标签的问题。 你们想要做的是,如果掌握更多信息、发挥作用和发挥这种作用的话。

public class CustomAuthHttpModule : IHttpModule
{    
    public void Init(HttpApplication context)
    {
        context.AuthenticateRequest += new EventHandler(OnAuthenticateRequest);
    }

    void OnAuthenticateRequest(object sender, EventArgs e)
    {
        HttpApplication application = (HttpApplication)sender;
        HttpContext context = appObject.Context;

        // user isn t logged in, so don t do anything else
        if (!context.User.Identity.IsAuthenticated) return;

        // look up the roles for the specified user, returning the role names as an array of strings
        string[] roles = LookupUserRolesFromWebService(context.User.Identity.Name);

        // replace the current User principal with a new one that includes the roles we discovered for that user.
        context.User = new GenericPrincipal(new GenericIdentity(context.User.Identity.Name), roles);
    }
}

You ll register the HTTP module in your web.config:

<httpModules>
    <add name="CustomAuthHttpModule" 
       type="MyAssembly.CustomAuthenticationModule, MyAssembly" />
</httpModules>

您现在可以使用MVC控制器和看法中的用户标语<>AuthenticatedAttribute等。

然而,我建议你研究用户作用的结果,以便你不 ha你的网络服务。 下面请各位发言。

问题回答

你可以请安全局申请。 设立一个Windows identity Foundation SDK,并在dk名录中找到例子(对我来说,是“C:Program 文件(x86)Windows ID Foundation SDKv4.0SamplesEnd-to-endFederation for Web Apps”。 其中一人(称为“网络应用基金”)申请认证。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Transaction handling with TransactionScope

I am implementing Transaction using TransactionScope with the help this MSDN article http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx I just want to confirm that is ...

System.Web.Mvc.Controller Initialize

i have the following base controller... public class BaseController : Controller { protected override void Initialize(System.Web.Routing.RequestContext requestContext) { if (...

Microsoft.Contracts namespace

For what it is necessary Microsoft.Contracts namespace in asp.net? I mean, in what cases I could write using Microsoft.Contracts;?

Separator line in ASP.NET

I d like to add a simple separator line in an aspx web form. Does anyone know how? It sounds easy enough, but still I can t manage to find how to do it.. 10x!

热门标签